feat(project): 实现AI项目初始化功能
- 新增项目初始化控制器,支持文件上传生成项目结构化数据 - 定义项目初始化结果DTO,包含项目、里程碑、任务、成员、资源、风险和时间节点等信息 - 实现项目初始化服务接口及其实现类,集成Spring AI结构化输出能力 - 支持根据内容或文件生成项目初始化数据,并保存到数据库 - 增加项目、里程碑、任务、成员、资源、风险及时间节点实体及对应Mapper - 实现文件上传到OSS及项目初始化记录功能,记录解析状态及结果 - 添加PostgreSQL JSONB类型处理器,支持JSON对象字段存储 - 修改开发环境数据库配置,更新连接的数据库名称为aiprojectmanager
This commit is contained in:
157
src/main/java/cn/yinlihupo/domain/entity/Project.java
Normal file
157
src/main/java/cn/yinlihupo/domain/entity/Project.java
Normal file
@@ -0,0 +1,157 @@
|
||||
package cn.yinlihupo.domain.entity;
|
||||
|
||||
import cn.yinlihupo.common.handler.JsonbTypeHandler;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 项目实体类
|
||||
* 对应数据库表: project
|
||||
*/
|
||||
@Data
|
||||
@TableName("project")
|
||||
public class Project {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 项目编号
|
||||
*/
|
||||
private String projectCode;
|
||||
|
||||
/**
|
||||
* 项目名称
|
||||
*/
|
||||
private String projectName;
|
||||
|
||||
/**
|
||||
* 项目类型
|
||||
*/
|
||||
private String projectType;
|
||||
|
||||
/**
|
||||
* 项目描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 项目目标
|
||||
*/
|
||||
private String objectives;
|
||||
|
||||
/**
|
||||
* 项目经理ID
|
||||
*/
|
||||
private Long managerId;
|
||||
|
||||
/**
|
||||
* 项目发起人ID
|
||||
*/
|
||||
private Long sponsorId;
|
||||
|
||||
/**
|
||||
* 计划开始日期
|
||||
*/
|
||||
private LocalDate planStartDate;
|
||||
|
||||
/**
|
||||
* 计划结束日期
|
||||
*/
|
||||
private LocalDate planEndDate;
|
||||
|
||||
/**
|
||||
* 实际开始日期
|
||||
*/
|
||||
private LocalDate actualStartDate;
|
||||
|
||||
/**
|
||||
* 实际结束日期
|
||||
*/
|
||||
private LocalDate actualEndDate;
|
||||
|
||||
/**
|
||||
* 项目预算
|
||||
*/
|
||||
private BigDecimal budget;
|
||||
|
||||
/**
|
||||
* 已花费金额
|
||||
*/
|
||||
private BigDecimal cost;
|
||||
|
||||
/**
|
||||
* 币种
|
||||
*/
|
||||
private String currency;
|
||||
|
||||
/**
|
||||
* 进度百分比
|
||||
*/
|
||||
private Integer progress;
|
||||
|
||||
/**
|
||||
* 状态: draft-草稿, planning-规划中, ongoing-进行中, paused-暂停, completed-已完成, cancelled-已取消
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 优先级: critical-关键, high-高, medium-中, low-低
|
||||
*/
|
||||
private String priority;
|
||||
|
||||
/**
|
||||
* 风险等级: high-高, medium-中, low-低
|
||||
*/
|
||||
private String riskLevel;
|
||||
|
||||
/**
|
||||
* 可见性: 1-公开, 2-部门内, 3-项目成员
|
||||
*/
|
||||
private Integer visibility;
|
||||
|
||||
/**
|
||||
* 标签列表
|
||||
*/
|
||||
@TableField(typeHandler = JsonbTypeHandler.class)
|
||||
private List<String> tags;
|
||||
|
||||
/**
|
||||
* 扩展数据
|
||||
*/
|
||||
@TableField(typeHandler = JsonbTypeHandler.class)
|
||||
private Object extraData;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新人
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除标记
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
}
|
||||
105
src/main/java/cn/yinlihupo/domain/entity/ProjectInitRecord.java
Normal file
105
src/main/java/cn/yinlihupo/domain/entity/ProjectInitRecord.java
Normal file
@@ -0,0 +1,105 @@
|
||||
package cn.yinlihupo.domain.entity;
|
||||
|
||||
import cn.yinlihupo.common.handler.JsonbTypeHandler;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 项目初始化记录实体类
|
||||
* 对应数据库表: project_init_record
|
||||
*/
|
||||
@Data
|
||||
@TableName("project_init_record")
|
||||
public class ProjectInitRecord {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 项目ID
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 上传的文件列表[{name, path, type, size}]
|
||||
*/
|
||||
@TableField(typeHandler = JsonbTypeHandler.class)
|
||||
private List<InputFile> inputFiles;
|
||||
|
||||
/**
|
||||
* 用户输入的项目描述
|
||||
*/
|
||||
private String inputText;
|
||||
|
||||
/**
|
||||
* 状态: pending-待解析, processing-解析中, completed-已完成, failed-失败
|
||||
*/
|
||||
private String parseStatus;
|
||||
|
||||
/**
|
||||
* 解析结果(结构化数据)
|
||||
*/
|
||||
@TableField(typeHandler = JsonbTypeHandler.class)
|
||||
private Object parseResult;
|
||||
|
||||
/**
|
||||
* 生成的里程碑数量
|
||||
*/
|
||||
private Integer generatedMilestones;
|
||||
|
||||
/**
|
||||
* 生成的任务数量
|
||||
*/
|
||||
private Integer generatedTasks;
|
||||
|
||||
/**
|
||||
* 生成的成员数量
|
||||
*/
|
||||
private Integer generatedMembers;
|
||||
|
||||
/**
|
||||
* 生成的资源数量
|
||||
*/
|
||||
private Integer generatedResources;
|
||||
|
||||
/**
|
||||
* 使用的AI模型
|
||||
*/
|
||||
private String model;
|
||||
|
||||
/**
|
||||
* 消耗的Token数
|
||||
*/
|
||||
private Integer tokensUsed;
|
||||
|
||||
/**
|
||||
* 错误信息
|
||||
*/
|
||||
private String errorMessage;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 输入文件信息内部类
|
||||
*/
|
||||
@Data
|
||||
public static class InputFile {
|
||||
private String name;
|
||||
private String path;
|
||||
private String type;
|
||||
private Long size;
|
||||
}
|
||||
}
|
||||
83
src/main/java/cn/yinlihupo/domain/entity/ProjectMember.java
Normal file
83
src/main/java/cn/yinlihupo/domain/entity/ProjectMember.java
Normal file
@@ -0,0 +1,83 @@
|
||||
package cn.yinlihupo.domain.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 项目成员实体类
|
||||
* 对应数据库表: project_member
|
||||
*/
|
||||
@Data
|
||||
@TableName("project_member")
|
||||
public class ProjectMember {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 项目ID
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 项目角色: manager-项目经理, leader-负责人, member-成员, observer-观察者
|
||||
*/
|
||||
private String roleCode;
|
||||
|
||||
/**
|
||||
* 加入日期
|
||||
*/
|
||||
private LocalDate joinDate;
|
||||
|
||||
/**
|
||||
* 离开日期
|
||||
*/
|
||||
private LocalDate leaveDate;
|
||||
|
||||
/**
|
||||
* 职责描述
|
||||
*/
|
||||
private String responsibility;
|
||||
|
||||
/**
|
||||
* 每周投入小时数
|
||||
*/
|
||||
private BigDecimal weeklyHours;
|
||||
|
||||
/**
|
||||
* 状态: 1-正常, 0-已移除
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除标记
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
}
|
||||
106
src/main/java/cn/yinlihupo/domain/entity/ProjectMilestone.java
Normal file
106
src/main/java/cn/yinlihupo/domain/entity/ProjectMilestone.java
Normal file
@@ -0,0 +1,106 @@
|
||||
package cn.yinlihupo.domain.entity;
|
||||
|
||||
import cn.yinlihupo.common.handler.JsonbTypeHandler;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 项目里程碑实体类
|
||||
* 对应数据库表: project_milestone
|
||||
*/
|
||||
@Data
|
||||
@TableName("project_milestone")
|
||||
public class ProjectMilestone {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 项目ID
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 里程碑名称
|
||||
*/
|
||||
private String milestoneName;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 计划日期
|
||||
*/
|
||||
private LocalDate planDate;
|
||||
|
||||
/**
|
||||
* 实际日期
|
||||
*/
|
||||
private LocalDate actualDate;
|
||||
|
||||
/**
|
||||
* 状态: pending-待开始, in_progress-进行中, completed-已完成, delayed-延期
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 完成进度
|
||||
*/
|
||||
private Integer progress;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 是否关键里程碑: 1-是, 0-否
|
||||
*/
|
||||
private Integer isKey;
|
||||
|
||||
/**
|
||||
* 交付物列表
|
||||
*/
|
||||
@TableField(typeHandler = JsonbTypeHandler.class)
|
||||
private List<String> deliverables;
|
||||
|
||||
/**
|
||||
* 扩展数据
|
||||
*/
|
||||
@TableField(typeHandler = JsonbTypeHandler.class)
|
||||
private Object extraData;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新人
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除标记
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
package cn.yinlihupo.domain.entity;
|
||||
|
||||
import cn.yinlihupo.common.handler.JsonbTypeHandler;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 项目时间节点实体类
|
||||
* 对应数据库表: project_timeline
|
||||
*/
|
||||
@Data
|
||||
@TableName("project_timeline")
|
||||
public class ProjectTimeline {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 项目ID
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 节点名称
|
||||
*/
|
||||
private String nodeName;
|
||||
|
||||
/**
|
||||
* 节点类型: phase-阶段, milestone-里程碑, event-事件, checkpoint-检查点
|
||||
*/
|
||||
private String nodeType;
|
||||
|
||||
/**
|
||||
* 父节点ID
|
||||
*/
|
||||
private Long parentId;
|
||||
|
||||
/**
|
||||
* 计划日期
|
||||
*/
|
||||
private LocalDate planDate;
|
||||
|
||||
/**
|
||||
* 实际日期
|
||||
*/
|
||||
private LocalDate actualDate;
|
||||
|
||||
/**
|
||||
* 描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 状态: pending-待开始, in_progress-进行中, completed-已完成, delayed-延期
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 知识库范围配置["report","file","risk","ticket"]
|
||||
*/
|
||||
@TableField(typeHandler = JsonbTypeHandler.class)
|
||||
private List<String> kbScope;
|
||||
|
||||
/**
|
||||
* 扩展数据
|
||||
*/
|
||||
@TableField(typeHandler = JsonbTypeHandler.class)
|
||||
private Object extraData;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除标记
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
}
|
||||
147
src/main/java/cn/yinlihupo/domain/entity/Resource.java
Normal file
147
src/main/java/cn/yinlihupo/domain/entity/Resource.java
Normal file
@@ -0,0 +1,147 @@
|
||||
package cn.yinlihupo.domain.entity;
|
||||
|
||||
import cn.yinlihupo.common.handler.JsonbTypeHandler;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 资源实体类
|
||||
* 对应数据库表: resource
|
||||
*/
|
||||
@Data
|
||||
@TableName("resource")
|
||||
public class Resource {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 资源编号
|
||||
*/
|
||||
private String resourceCode;
|
||||
|
||||
/**
|
||||
* 项目ID
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 资源类型: human-人力, material-物料, equipment-设备, software-软件, finance-资金, other-其他
|
||||
*/
|
||||
private String resourceType;
|
||||
|
||||
/**
|
||||
* 资源名称
|
||||
*/
|
||||
private String resourceName;
|
||||
|
||||
/**
|
||||
* 资源描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 规格型号
|
||||
*/
|
||||
private String specification;
|
||||
|
||||
/**
|
||||
* 单位
|
||||
*/
|
||||
private String unit;
|
||||
|
||||
/**
|
||||
* 计划数量
|
||||
*/
|
||||
private BigDecimal planQuantity;
|
||||
|
||||
/**
|
||||
* 实际数量
|
||||
*/
|
||||
private BigDecimal actualQuantity;
|
||||
|
||||
/**
|
||||
* 单价
|
||||
*/
|
||||
private BigDecimal unitPrice;
|
||||
|
||||
/**
|
||||
* 币种
|
||||
*/
|
||||
private String currency;
|
||||
|
||||
/**
|
||||
* 供应商/来源
|
||||
*/
|
||||
private String supplier;
|
||||
|
||||
/**
|
||||
* 状态: planned-计划中, requested-已申请, approved-已批准, procuring-采购中, arrived-已到货, in_use-使用中, completed-已完成
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 计划到位日期
|
||||
*/
|
||||
private LocalDate planArriveDate;
|
||||
|
||||
/**
|
||||
* 实际到位日期
|
||||
*/
|
||||
private LocalDate actualArriveDate;
|
||||
|
||||
/**
|
||||
* 负责人ID
|
||||
*/
|
||||
private Long responsibleId;
|
||||
|
||||
/**
|
||||
* 存放位置
|
||||
*/
|
||||
private String location;
|
||||
|
||||
/**
|
||||
* 标签
|
||||
*/
|
||||
@TableField(typeHandler = JsonbTypeHandler.class)
|
||||
private List<String> tags;
|
||||
|
||||
/**
|
||||
* 扩展数据
|
||||
*/
|
||||
@TableField(typeHandler = JsonbTypeHandler.class)
|
||||
private Object extraData;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新人
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除标记
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
}
|
||||
169
src/main/java/cn/yinlihupo/domain/entity/Risk.java
Normal file
169
src/main/java/cn/yinlihupo/domain/entity/Risk.java
Normal file
@@ -0,0 +1,169 @@
|
||||
package cn.yinlihupo.domain.entity;
|
||||
|
||||
import cn.yinlihupo.common.handler.JsonbTypeHandler;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 风险实体类
|
||||
* 对应数据库表: risk
|
||||
*/
|
||||
@Data
|
||||
@TableName("risk")
|
||||
public class Risk {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 风险编号
|
||||
*/
|
||||
private String riskCode;
|
||||
|
||||
/**
|
||||
* 项目ID
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 风险分类: technical-技术风险, schedule-进度风险, cost-成本风险, quality-质量风险, resource-资源风险, external-外部风险, other-其他
|
||||
*/
|
||||
private String category;
|
||||
|
||||
/**
|
||||
* 风险名称
|
||||
*/
|
||||
private String riskName;
|
||||
|
||||
/**
|
||||
* 风险描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 风险来源: internal-内部, external-外部, ai_detection-AI检测
|
||||
*/
|
||||
private String riskSource;
|
||||
|
||||
/**
|
||||
* 风险类型
|
||||
*/
|
||||
private String riskType;
|
||||
|
||||
/**
|
||||
* 发生概率(0-100%)
|
||||
*/
|
||||
private BigDecimal probability;
|
||||
|
||||
/**
|
||||
* 影响程度(1-5)
|
||||
*/
|
||||
private BigDecimal impact;
|
||||
|
||||
/**
|
||||
* 风险得分(概率*影响)
|
||||
*/
|
||||
private BigDecimal riskScore;
|
||||
|
||||
/**
|
||||
* 风险等级: critical-严重, high-高, medium-中, low-低
|
||||
*/
|
||||
private String riskLevel;
|
||||
|
||||
/**
|
||||
* 状态: identified-已识别, assigned-已分派工单, mitigating-缓解中, resolved-已解决, closed-已关闭
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 负责人ID
|
||||
*/
|
||||
private Long ownerId;
|
||||
|
||||
/**
|
||||
* 关联的工单ID数组
|
||||
*/
|
||||
@TableField(typeHandler = JsonbTypeHandler.class)
|
||||
private List<Long> workOrderIds;
|
||||
|
||||
/**
|
||||
* 缓解措施
|
||||
*/
|
||||
private String mitigationPlan;
|
||||
|
||||
/**
|
||||
* 应急计划
|
||||
*/
|
||||
private String contingencyPlan;
|
||||
|
||||
/**
|
||||
* 触发条件
|
||||
*/
|
||||
private String triggerCondition;
|
||||
|
||||
/**
|
||||
* 发现时间
|
||||
*/
|
||||
private LocalDateTime discoverTime;
|
||||
|
||||
/**
|
||||
* 预期解决日期
|
||||
*/
|
||||
private LocalDate dueDate;
|
||||
|
||||
/**
|
||||
* 解决时间
|
||||
*/
|
||||
private LocalDateTime resolvedTime;
|
||||
|
||||
/**
|
||||
* AI分析结果
|
||||
*/
|
||||
@TableField(typeHandler = JsonbTypeHandler.class)
|
||||
private Object aiAnalysis;
|
||||
|
||||
/**
|
||||
* 标签
|
||||
*/
|
||||
@TableField(typeHandler = JsonbTypeHandler.class)
|
||||
private List<String> tags;
|
||||
|
||||
/**
|
||||
* 扩展数据
|
||||
*/
|
||||
@TableField(typeHandler = JsonbTypeHandler.class)
|
||||
private Object extraData;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新人
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除标记
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
}
|
||||
158
src/main/java/cn/yinlihupo/domain/entity/Task.java
Normal file
158
src/main/java/cn/yinlihupo/domain/entity/Task.java
Normal file
@@ -0,0 +1,158 @@
|
||||
package cn.yinlihupo.domain.entity;
|
||||
|
||||
import cn.yinlihupo.common.handler.JsonbTypeHandler;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 任务实体类
|
||||
* 对应数据库表: task
|
||||
*/
|
||||
@Data
|
||||
@TableName("task")
|
||||
public class Task {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 任务编号
|
||||
*/
|
||||
private String taskCode;
|
||||
|
||||
/**
|
||||
* 项目ID
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 所属里程碑ID
|
||||
*/
|
||||
private Long milestoneId;
|
||||
|
||||
/**
|
||||
* 父任务ID
|
||||
*/
|
||||
private Long parentId;
|
||||
|
||||
/**
|
||||
* 任务名称
|
||||
*/
|
||||
private String taskName;
|
||||
|
||||
/**
|
||||
* 任务描述
|
||||
*/
|
||||
private String description;
|
||||
|
||||
/**
|
||||
* 任务类型
|
||||
*/
|
||||
private String taskType;
|
||||
|
||||
/**
|
||||
* 执行人ID
|
||||
*/
|
||||
private Long assigneeId;
|
||||
|
||||
/**
|
||||
* 计划开始日期
|
||||
*/
|
||||
private LocalDate planStartDate;
|
||||
|
||||
/**
|
||||
* 计划结束日期
|
||||
*/
|
||||
private LocalDate planEndDate;
|
||||
|
||||
/**
|
||||
* 实际开始日期
|
||||
*/
|
||||
private LocalDate actualStartDate;
|
||||
|
||||
/**
|
||||
* 实际结束日期
|
||||
*/
|
||||
private LocalDate actualEndDate;
|
||||
|
||||
/**
|
||||
* 计划工时(小时)
|
||||
*/
|
||||
private BigDecimal planHours;
|
||||
|
||||
/**
|
||||
* 实际工时(小时)
|
||||
*/
|
||||
private BigDecimal actualHours;
|
||||
|
||||
/**
|
||||
* 进度百分比
|
||||
*/
|
||||
private Integer progress;
|
||||
|
||||
/**
|
||||
* 优先级: critical-关键, high-高, medium-中, low-低
|
||||
*/
|
||||
private String priority;
|
||||
|
||||
/**
|
||||
* 状态: pending-待开始, in_progress-进行中, completed-已完成, cancelled-已取消
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
private Integer sortOrder;
|
||||
|
||||
/**
|
||||
* 标签
|
||||
*/
|
||||
@TableField(typeHandler = JsonbTypeHandler.class)
|
||||
private List<String> tags;
|
||||
|
||||
/**
|
||||
* 附件列表
|
||||
*/
|
||||
@TableField(typeHandler = JsonbTypeHandler.class)
|
||||
private List<Object> attachments;
|
||||
|
||||
/**
|
||||
* 扩展数据
|
||||
*/
|
||||
@TableField(typeHandler = JsonbTypeHandler.class)
|
||||
private Object extraData;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新人
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除标记
|
||||
*/
|
||||
@TableLogic
|
||||
private Integer deleted;
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package cn.yinlihupo.domain.dto;
|
||||
package cn.yinlihupo.domain.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
Reference in New Issue
Block a user