新增车间计算记录与数据看板

This commit is contained in:
2025-05-15 21:35:16 +08:00
parent a63afc6bfb
commit a0bc26ef3a
31 changed files with 1127 additions and 78 deletions

View File

@@ -32,6 +32,12 @@ public class LaborCostData extends BaseEntity {
// 加班时间
private Double overtime;
// 出差次数
private Double tripTimes;
// 请假次数
private Double absenceDays;
}

View File

@@ -0,0 +1,78 @@
package com.ruoyi.oa.domain;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 计算记录对象 oa_attendance_record
*
* @author ruoyi
* @date 2025-05-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("oa_attendance_record")
public class OaAttendanceRecord extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 主键id
*/
@TableId(value = "record_id")
private Long recordId;
/**
* 涉及月份
*/
private Date relationMonth;
/**
* 生成时间
*/
private Date calcTime;
/**
* 统计者姓名
*/
private String nickName;
/**
* 出差天数
*/
private BigDecimal trips;
/**
* 请假次数
*/
private BigDecimal notNum;
/**
* 出勤天数
*/
private BigDecimal works;
/**
* 涉及项目
*/
private String projectIds;
/**
* 加班时长
*/
private BigDecimal overNum;
/**
* 删除标志
*/
@TableLogic
private Long delFlag;
/**
* 备注
*/
private String remark;
private Long userId;
}

View File

@@ -25,8 +25,8 @@ public class OaReportDetail extends BaseEntity {
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
@TableId(value = "detail_id")
private Long detailId;
/**
* 关联汇报概述IDoa_report_summary.id
*/

View File

@@ -27,8 +27,8 @@ public class OaReportSummary extends BaseEntity {
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
@TableId(value = "summary_id")
private Long summaryId;
/**
* 汇报标题
*/
@@ -55,4 +55,6 @@ public class OaReportSummary extends BaseEntity {
*/
private String remark;
private Long type;
}

View File

@@ -0,0 +1,86 @@
package com.ruoyi.oa.domain.bo;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.util.Date;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 计算记录业务对象 oa_attendance_record
*
* @author ruoyi
* @date 2025-05-15
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class OaAttendanceRecordBo extends BaseEntity {
/**
* 主键id
*/
private Long recordId;
/**
* 涉及月份
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date relationMonth;
/**
* 生成时间
*/
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date calcTime;
/**
* 统计者姓名
*/
private String nickName;
/**
* 出差天数
*/
private BigDecimal trips;
/**
* 请假次数
*/
private BigDecimal notNum;
/**
* 出勤天数
*/
private BigDecimal works;
/**
* 涉及项目
*/
private String projectIds;
/**
* 加班时长
*/
private BigDecimal overNum;
/**
* 备注
*/
private String remark;
private Long userId;
}

View File

@@ -25,48 +25,41 @@ public class OaReportDetailBo extends BaseEntity {
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
private Long detailId;
/**
* 关联汇报概述IDoa_report_summary.id
*/
@NotNull(message = "关联汇报概述IDoa_report_summary.id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long summaryId;
/**
* 设备唯一编号
*/
@NotBlank(message = "设备唯一编号不能为空", groups = { AddGroup.class, EditGroup.class })
private String deviceCode;
/**
* 设备类别
*/
@NotBlank(message = "设备类别不能为空", groups = { AddGroup.class, EditGroup.class })
private String category;
/**
* 设备生产说明
*/
@NotBlank(message = "设备生产说明不能为空", groups = { AddGroup.class, EditGroup.class })
private String deviceDescription;
/**
* 汇报详情内容(含文字、图像说明等)
*/
@NotBlank(message = "汇报详情内容(含文字、图像说明等)不能为空", groups = { AddGroup.class, EditGroup.class })
private String reportDetail;
/**
* 关联图像 OSS ID 列表(逗号分隔)
*/
@NotBlank(message = "关联图像 OSS ID 列表(逗号分隔)不能为空", groups = { AddGroup.class, EditGroup.class })
private String ossIds;
/**
* 备注
*/
@NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
private String remark;

View File

@@ -27,7 +27,7 @@ public class OaReportSummaryBo extends BaseEntity {
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
private Long summaryId;
/**
* 汇报标题
@@ -59,4 +59,6 @@ public class OaReportSummaryBo extends BaseEntity {
private String remark;
private Long type;
}

View File

@@ -0,0 +1,30 @@
package com.ruoyi.oa.domain.vo;
import lombok.Data;
@Data
public class AttendanceMonthlyCount {
/** 格式:"2025-05" */
private String month;
/** 出勤次数(含出差) */
private Integer attendanceCount;
/** 请假次数 */
private Integer leaveCount;
// + getters/setters
private Long workHours;
private Long leaveHours;
private Long overtimeHours;
private Long tripHours;
private Double attendanceRate; // 出勤率01 之间)
private Integer tripCount; // 出差次数
private Integer leavePeople; // 请假人数
}

View File

@@ -0,0 +1,97 @@
package com.ruoyi.oa.domain.vo;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.common.annotation.ExcelDictFormat;
import com.ruoyi.common.convert.ExcelDictConvert;
import com.ruoyi.oa.domain.LaborCostData;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* 计算记录视图对象 oa_attendance_record
*
* @author ruoyi
* @date 2025-05-15
*/
@Data
@ExcelIgnoreUnannotated
public class OaAttendanceRecordVo {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@ExcelProperty(value = "主键id")
private Long recordId;
/**
* 涉及月份
*/
@ExcelProperty(value = "涉及月份")
private Date relationMonth;
/**
* 生成时间
*/
@ExcelProperty(value = "生成时间")
private Date calcTime;
/**
* 统计者姓名
*/
@ExcelProperty(value = "统计者姓名")
private String nickName;
/**
* 出差天数
*/
@ExcelProperty(value = "出差天数")
private BigDecimal trips;
/**
* 请假次数
*/
@ExcelProperty(value = "请假次数")
private BigDecimal notNum;
/**
* 出勤天数
*/
@ExcelProperty(value = "出勤天数")
private BigDecimal works;
/**
* 涉及项目
*/
@ExcelProperty(value = "涉及项目")
private String projectIds;
/**
* 加班时长
*/
@ExcelProperty(value = "加班时长")
private BigDecimal overNum;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
private List<SysOaAttendanceVo> attendanceList;
private Long userId;
/** ▶︎ 按项目汇总 */
private List<ProjectAttendanceSummaryVo> projectList;
private Long laborCost;
}

View File

@@ -25,7 +25,7 @@ public class OaReportDetailVo {
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
private Long detailId;
/**
* 关联汇报概述IDoa_report_summary.id

View File

@@ -27,7 +27,7 @@ public class OaReportSummaryVo {
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
private Long summaryId;
/**
* 汇报标题
@@ -65,5 +65,7 @@ public class OaReportSummaryVo {
@ExcelProperty(value = "备注")
private String remark;
private Long type;
}

View File

@@ -0,0 +1,17 @@
package com.ruoyi.oa.domain.vo;
import lombok.Data;
/** 项目维度汇总行 */
@Data
public class ProjectAttendanceSummaryVo {
private Long projectId;
private String projectName;
private String color;
private Integer workTimes; // 出勤天数
private Integer hourWorkTimes; // 工作时长h
private Integer overTime; // 加班时长h
private Integer tripDays; // 出差天数
}