From e43dea5c4c2345f40a9640efdebf860850a45f36 Mon Sep 17 00:00:00 2001
From: houzhongjian <houzhongyi@126.com>
Date: 星期二, 17 六月 2025 17:20:18 +0800
Subject: [PATCH] 调度建议代码提交

---
 iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/dal/mysql/schedulesuggest/ScheduleSuggestMapper.java              |   29 +++
 iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/schedulesuggest/ScheduleSuggestController.java   |   94 +++++++++++
 iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/schedulesuggest/vo/ScheduleSuggestPageReqVO.java |   36 ++++
 iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/schedulesuggest/vo/ScheduleSuggestSaveReqVO.java |   33 ++++
 iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/service/schedulesuggest/ScheduleSuggestService.java               |   70 ++++++++
 iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/dal/dataobject/schedulesuggest/ScheduleSuggestDO.java             |   53 ++++++
 iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/schedulesuggest/vo/ScheduleSuggestRespVO.java    |   32 ++++
 iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/service/schedulesuggest/ScheduleSuggestServiceImpl.java           |   86 ++++++++++
 8 files changed, 433 insertions(+), 0 deletions(-)

diff --git a/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/schedulesuggest/ScheduleSuggestController.java b/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/schedulesuggest/ScheduleSuggestController.java
new file mode 100644
index 0000000..321398e
--- /dev/null
+++ b/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/schedulesuggest/ScheduleSuggestController.java
@@ -0,0 +1,94 @@
+package com.iailab.module.ai.controller.admin.schedulesuggest;
+
+import org.springframework.web.bind.annotation.*;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import jakarta.validation.*;
+
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.pojo.CommonResult;
+import com.iailab.framework.common.util.object.BeanUtils;
+import static com.iailab.framework.common.pojo.CommonResult.success;
+
+import com.iailab.module.ai.controller.admin.schedulesuggest.vo.*;
+import com.iailab.module.ai.dal.dataobject.schedulesuggest.ScheduleSuggestDO;
+import com.iailab.module.ai.service.schedulesuggest.ScheduleSuggestService;
+
+import java.util.List;
+
+@Tag(name = "管理后台 - 大模型调度建议")
+@RestController
+@RequestMapping("/ai/schedule-suggest")
+@Validated
+public class ScheduleSuggestController {
+
+    @Resource
+    private ScheduleSuggestService scheduleSuggestService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建大模型调度建议")
+    @PreAuthorize("@ss.hasPermission('ai:schedule-suggest:create')")
+    public CommonResult<Long> createScheduleSuggest(@Valid @RequestBody ScheduleSuggestSaveReqVO createReqVO) {
+        return success(scheduleSuggestService.createScheduleSuggest(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新大模型调度建议")
+    @PreAuthorize("@ss.hasPermission('ai:schedule-suggest:update')")
+    public CommonResult<Boolean> updateScheduleSuggest(@Valid @RequestBody ScheduleSuggestSaveReqVO updateReqVO) {
+        scheduleSuggestService.updateScheduleSuggest(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除大模型调度建议")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('ai:schedule-suggest:delete')")
+    public CommonResult<Boolean> deleteScheduleSuggest(@RequestParam("id") Long id) {
+        scheduleSuggestService.deleteScheduleSuggest(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得大模型调度建议")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('ai:schedule-suggest:query')")
+    public CommonResult<ScheduleSuggestRespVO> getScheduleSuggest(@RequestParam("id") Long id) {
+        ScheduleSuggestDO scheduleSuggest = scheduleSuggestService.getScheduleSuggest(id);
+        return success(BeanUtils.toBean(scheduleSuggest, ScheduleSuggestRespVO.class));
+    }
+
+    @PutMapping("/operate-suggest")
+    @Operation(summary = "采纳忽略取消采纳")
+    @PreAuthorize("@ss.hasPermission('ai:schedule-suggest:update')")
+    public CommonResult<Boolean> operateScheduleSuggest(@RequestBody ScheduleSuggestSaveReqVO updateReqVO) {
+        ScheduleSuggestDO scheduleSuggest = scheduleSuggestService.getScheduleSuggest(updateReqVO.getId());
+        scheduleSuggest.setStatus(updateReqVO.getStatus());
+        scheduleSuggestService.operateScheduleSuggest(scheduleSuggest);
+        return success(true);
+    }
+
+    @GetMapping("/simple-list")
+    @Operation(summary = "获得n条大模型调度建议")
+    @Parameter(name = "top", description = "编号", required = true, example = "5")
+    @PreAuthorize("@ss.hasPermission('ai:schedule-suggest:query')")
+    public CommonResult<List<ScheduleSuggestRespVO>> getTopScheduleSuggests(@RequestParam("top") Long top) {
+        List<ScheduleSuggestDO> scheduleSuggests = scheduleSuggestService.getTopScheduleSuggests(top);
+        return success(BeanUtils.toBean(scheduleSuggests, ScheduleSuggestRespVO.class));
+    }
+
+
+    @GetMapping("/page")
+    @Operation(summary = "获得大模型调度建议分页")
+    @PreAuthorize("@ss.hasPermission('ai:schedule-suggest:query')")
+    public CommonResult<PageResult<ScheduleSuggestRespVO>> getScheduleSuggestPage(@Valid ScheduleSuggestPageReqVO pageReqVO) {
+        PageResult<ScheduleSuggestDO> pageResult = scheduleSuggestService.getScheduleSuggestPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, ScheduleSuggestRespVO.class));
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/schedulesuggest/vo/ScheduleSuggestPageReqVO.java b/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/schedulesuggest/vo/ScheduleSuggestPageReqVO.java
new file mode 100644
index 0000000..6aadfe0
--- /dev/null
+++ b/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/schedulesuggest/vo/ScheduleSuggestPageReqVO.java
@@ -0,0 +1,36 @@
+package com.iailab.module.ai.controller.admin.schedulesuggest.vo;
+
+import lombok.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.iailab.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static com.iailab.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 大模型调度建议分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class ScheduleSuggestPageReqVO extends PageParam {
+
+    @Schema(description = "模型id", example = "5706")
+    private Long modelId;
+
+    @Schema(description = "会话id", example = "3684")
+    private Long conversationId;
+
+    @Schema(description = "消息id", example = "8512")
+    private Long messageId;
+
+    @Schema(description = "调度建议")
+    private String content;
+
+    @Schema(description = "状态(0-未处理 1-已采纳 2-已忽略)", example = "2")
+    private Integer status;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}
\ No newline at end of file
diff --git a/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/schedulesuggest/vo/ScheduleSuggestRespVO.java b/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/schedulesuggest/vo/ScheduleSuggestRespVO.java
new file mode 100644
index 0000000..a097bd5
--- /dev/null
+++ b/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/schedulesuggest/vo/ScheduleSuggestRespVO.java
@@ -0,0 +1,32 @@
+package com.iailab.module.ai.controller.admin.schedulesuggest.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 大模型调度建议 Response VO")
+@Data
+public class ScheduleSuggestRespVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26874")
+    private Long id;
+
+    @Schema(description = "模型id", requiredMode = Schema.RequiredMode.REQUIRED, example = "5706")
+    private Long modelId;
+
+    @Schema(description = "会话id", requiredMode = Schema.RequiredMode.REQUIRED, example = "3684")
+    private Long conversationId;
+
+    @Schema(description = "消息id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8512")
+    private Long messageId;
+
+    @Schema(description = "调度建议")
+    private String content;
+
+    @Schema(description = "状态(0-未处理 1-已采纳 2-已忽略)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    private Integer status;
+
+    @Schema(description = "创建时间")
+    private LocalDateTime createTime;
+
+}
\ No newline at end of file
diff --git a/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/schedulesuggest/vo/ScheduleSuggestSaveReqVO.java b/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/schedulesuggest/vo/ScheduleSuggestSaveReqVO.java
new file mode 100644
index 0000000..b56c03c
--- /dev/null
+++ b/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/controller/admin/schedulesuggest/vo/ScheduleSuggestSaveReqVO.java
@@ -0,0 +1,33 @@
+package com.iailab.module.ai.controller.admin.schedulesuggest.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import jakarta.validation.constraints.*;
+
+@Schema(description = "管理后台 - 大模型调度建议新增/修改 Request VO")
+@Data
+public class ScheduleSuggestSaveReqVO {
+
+    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "26874")
+    private Long id;
+
+    @Schema(description = "模型id", requiredMode = Schema.RequiredMode.REQUIRED, example = "5706")
+    @NotNull(message = "模型id不能为空")
+    private Long modelId;
+
+    @Schema(description = "会话id", requiredMode = Schema.RequiredMode.REQUIRED, example = "3684")
+    @NotNull(message = "会话id不能为空")
+    private Long conversationId;
+
+    @Schema(description = "消息id", requiredMode = Schema.RequiredMode.REQUIRED, example = "8512")
+    @NotNull(message = "消息id不能为空")
+    private Long messageId;
+
+    @Schema(description = "调度建议")
+    private String content;
+
+    @Schema(description = "状态(0-未处理 1-已采纳 2-已忽略)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
+    @NotNull(message = "状态(0-未处理 1-已采纳 2-已忽略)不能为空")
+    private Integer status;
+
+}
\ No newline at end of file
diff --git a/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/dal/dataobject/schedulesuggest/ScheduleSuggestDO.java b/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/dal/dataobject/schedulesuggest/ScheduleSuggestDO.java
new file mode 100644
index 0000000..486bc97
--- /dev/null
+++ b/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/dal/dataobject/schedulesuggest/ScheduleSuggestDO.java
@@ -0,0 +1,53 @@
+package com.iailab.module.ai.dal.dataobject.schedulesuggest;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import com.iailab.framework.mybatis.core.dataobject.BaseDO;
+
+import static com.baomidou.mybatisplus.annotation.IdType.ASSIGN_ID;
+
+/**
+ * 大模型调度建议 DO
+ *
+ * @author 超级管理员
+ */
+@TableName("ai_schedule_suggest")
+@KeySequence("ai_schedule_suggest_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ScheduleSuggestDO extends BaseDO {
+
+    /**
+     * id
+     */
+    @TableId(value = "id",type = ASSIGN_ID)
+    private Long id;
+    /**
+     * 模型id
+     */
+    private Long modelId;
+    /**
+     * 会话id
+     */
+    private Long conversationId;
+    /**
+     * 消息id
+     */
+    private Long messageId;
+    /**
+     * 调度建议
+     */
+    private String content;
+    /**
+     * 状态(0-未处理 1-已采纳 2-已忽略)
+     */
+    private Integer status;
+
+}
\ No newline at end of file
diff --git a/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/dal/mysql/schedulesuggest/ScheduleSuggestMapper.java b/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/dal/mysql/schedulesuggest/ScheduleSuggestMapper.java
new file mode 100644
index 0000000..008ac5c
--- /dev/null
+++ b/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/dal/mysql/schedulesuggest/ScheduleSuggestMapper.java
@@ -0,0 +1,29 @@
+package com.iailab.module.ai.dal.mysql.schedulesuggest;
+
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.iailab.framework.mybatis.core.mapper.BaseMapperX;
+import com.iailab.module.ai.dal.dataobject.schedulesuggest.ScheduleSuggestDO;
+import org.apache.ibatis.annotations.Mapper;
+import com.iailab.module.ai.controller.admin.schedulesuggest.vo.*;
+
+/**
+ * 大模型调度建议 Mapper
+ *
+ * @author 超级管理员
+ */
+@Mapper
+public interface ScheduleSuggestMapper extends BaseMapperX<ScheduleSuggestDO> {
+
+    default PageResult<ScheduleSuggestDO> selectPage(ScheduleSuggestPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<ScheduleSuggestDO>()
+                .eqIfPresent(ScheduleSuggestDO::getModelId, reqVO.getModelId())
+                .eqIfPresent(ScheduleSuggestDO::getConversationId, reqVO.getConversationId())
+                .eqIfPresent(ScheduleSuggestDO::getMessageId, reqVO.getMessageId())
+                .eqIfPresent(ScheduleSuggestDO::getContent, reqVO.getContent())
+                .eqIfPresent(ScheduleSuggestDO::getStatus, reqVO.getStatus())
+                .betweenIfPresent(ScheduleSuggestDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(ScheduleSuggestDO::getId));
+    }
+
+}
\ No newline at end of file
diff --git a/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/service/schedulesuggest/ScheduleSuggestService.java b/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/service/schedulesuggest/ScheduleSuggestService.java
new file mode 100644
index 0000000..5b1c583
--- /dev/null
+++ b/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/service/schedulesuggest/ScheduleSuggestService.java
@@ -0,0 +1,70 @@
+package com.iailab.module.ai.service.schedulesuggest;
+
+import jakarta.validation.*;
+import com.iailab.module.ai.controller.admin.schedulesuggest.vo.*;
+import com.iailab.module.ai.dal.dataobject.schedulesuggest.ScheduleSuggestDO;
+import com.iailab.framework.common.pojo.PageResult;
+
+import java.util.List;
+
+/**
+ * 大模型调度建议 Service 接口
+ *
+ * @author 超级管理员
+ */
+public interface ScheduleSuggestService {
+
+    /**
+     * 创建大模型调度建议
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createScheduleSuggest(@Valid ScheduleSuggestSaveReqVO createReqVO);
+
+    /**
+     * 更新大模型调度建议
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateScheduleSuggest(@Valid ScheduleSuggestSaveReqVO updateReqVO);
+
+    /**
+     * 删除大模型调度建议
+     *
+     * @param id 编号
+     */
+    void deleteScheduleSuggest(Long id);
+
+    /**
+     * 获得大模型调度建议
+     *
+     * @param id 编号
+     * @return 大模型调度建议
+     */
+    ScheduleSuggestDO getScheduleSuggest(Long id);
+
+    /**
+     * 采纳忽略取消采纳
+     *
+     * @return 大模型调度建议
+     */
+    void operateScheduleSuggest(ScheduleSuggestDO scheduleSuggestDO);
+
+    /**
+     * 获得n条大模型调度建议
+     *
+     * @param top 数量
+     * @return 大模型调度建议
+     */
+    List<ScheduleSuggestDO> getTopScheduleSuggests(Long top);
+
+    /**
+     * 获得大模型调度建议分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 大模型调度建议分页
+     */
+    PageResult<ScheduleSuggestDO> getScheduleSuggestPage(ScheduleSuggestPageReqVO pageReqVO);
+
+}
\ No newline at end of file
diff --git a/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/service/schedulesuggest/ScheduleSuggestServiceImpl.java b/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/service/schedulesuggest/ScheduleSuggestServiceImpl.java
new file mode 100644
index 0000000..e3897e3
--- /dev/null
+++ b/iailab-module-ai/iailab-module-ai-biz/src/main/java/com/iailab/module/ai/service/schedulesuggest/ScheduleSuggestServiceImpl.java
@@ -0,0 +1,86 @@
+package com.iailab.module.ai.service.schedulesuggest;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.springframework.stereotype.Service;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+
+import com.iailab.module.ai.controller.admin.schedulesuggest.vo.*;
+import com.iailab.module.ai.dal.dataobject.schedulesuggest.ScheduleSuggestDO;
+import com.iailab.framework.common.pojo.PageResult;
+import com.iailab.framework.common.util.object.BeanUtils;
+
+import com.iailab.module.ai.dal.mysql.schedulesuggest.ScheduleSuggestMapper;
+
+import java.util.List;
+
+import static com.iailab.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static com.iailab.module.ai.enums.ErrorCodeConstants.*;
+
+/**
+ * 大模型调度建议 Service 实现类
+ *
+ * @author 超级管理员
+ */
+@Service
+@Validated
+public class ScheduleSuggestServiceImpl implements ScheduleSuggestService {
+
+    @Resource
+    private ScheduleSuggestMapper scheduleSuggestMapper;
+
+    @Override
+    public Long createScheduleSuggest(ScheduleSuggestSaveReqVO createReqVO) {
+        // 插入
+        ScheduleSuggestDO scheduleSuggest = BeanUtils.toBean(createReqVO, ScheduleSuggestDO.class);
+        scheduleSuggestMapper.insert(scheduleSuggest);
+        // 返回
+        return scheduleSuggest.getId();
+    }
+
+    @Override
+    public void updateScheduleSuggest(ScheduleSuggestSaveReqVO updateReqVO) {
+        // 校验存在
+        validateScheduleSuggestExists(updateReqVO.getId());
+        // 更新
+        ScheduleSuggestDO updateObj = BeanUtils.toBean(updateReqVO, ScheduleSuggestDO.class);
+        scheduleSuggestMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteScheduleSuggest(Long id) {
+        // 校验存在
+        validateScheduleSuggestExists(id);
+        // 删除
+        scheduleSuggestMapper.deleteById(id);
+    }
+
+    private void validateScheduleSuggestExists(Long id) {
+        if (scheduleSuggestMapper.selectById(id) == null) {
+            throw exception(SCHEDULE_SUGGEST_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public ScheduleSuggestDO getScheduleSuggest(Long id) {
+        return scheduleSuggestMapper.selectById(id);
+    }
+
+    @Override
+    public void operateScheduleSuggest(ScheduleSuggestDO scheduleSuggestDO) {
+        scheduleSuggestMapper.updateById(scheduleSuggestDO);
+    }
+
+    @Override
+    public List<ScheduleSuggestDO> getTopScheduleSuggests(Long top) {
+        return scheduleSuggestMapper.selectList(new LambdaQueryWrapper<ScheduleSuggestDO>()
+                .orderByDesc(ScheduleSuggestDO::getCreateTime)
+                .last("limit " + top));
+    }
+
+    @Override
+    public PageResult<ScheduleSuggestDO> getScheduleSuggestPage(ScheduleSuggestPageReqVO pageReqVO) {
+        return scheduleSuggestMapper.selectPage(pageReqVO);
+    }
+
+}
\ No newline at end of file

--
Gitblit v1.9.3