feat(cost): 新增生产成本管理模块基础功能

- 新增成本项目配置(CostItem)实体、Bo、Vo、Mapper、Service及Controller,提供增删改查和分页查询服务
- 新增成本单价历史(CostPrice)实体、Bo、Vo、Mapper、Service及Controller,管理成本项目单价历史记录
- 新增生产成本明细(CostProdDetail)实体、Bo、Vo、Mapper、Service及Controller,记录生产消耗明细
- 新增生产指标明细(CostProdMetric)实体、Bo、Vo、Mapper、Service及Controller,管理生产指标计算
- 新增生产月报(CostProdReport)实体、Bo、Vo、Mapper、Service及Controller,提供生产月报管理功能
- 在klp-admin模块pom.xml中引入klp-cost模块依赖,并添加klp-cost模块到项目主pom.xml
This commit is contained in:
2026-05-25 14:14:45 +08:00
parent cb18132ec6
commit e04a4a0b99
43 changed files with 2448 additions and 0 deletions

View File

@@ -0,0 +1,53 @@
package com.klp.cost.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 成本项目配置对象 cost_item
*
* @author klp
* @date 2026-05-25
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("cost_item")
public class CostItem extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 主键ID
*/
@TableId(value = "item_id")
private Long itemId;
/**
* 成本项目编码
*/
private String itemCode;
/**
* 成本项目名称
*/
private String itemName;
/**
* 成本分类 原料/能耗/辅料/设备/人工
*/
private String category;
/**
* 计量单位
*/
private String unit;
/**
* 备注
*/
private String remark;
/**
* 删除标识 0=正常 2=删除
*/
@TableLogic
private Long delFlag;
}

View File

@@ -0,0 +1,55 @@
package com.klp.cost.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 成本单价历史对象 cost_price
*
* @author klp
* @date 2026-05-25
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("cost_price")
public class CostPrice extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 主键ID
*/
@TableId(value = "price_id")
private Long priceId;
/**
* 成本项目ID
*/
private Long itemId;
/**
* 单价
*/
private BigDecimal price;
/**
* 生效日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date effectiveDate;
/**
* 备注
*/
private String remark;
/**
* 删除标识 0=正常 2=删除
*/
@TableLogic
private Long delFlag;
}

View File

@@ -0,0 +1,71 @@
package com.klp.cost.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 生产成本明细对象 cost_prod_detail
*
* @author klp
* @date 2026-05-25
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("cost_prod_detail")
public class CostProdDetail extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 主键ID
*/
@TableId(value = "detail_id")
private Long detailId;
/**
* 生产月报ID
*/
private Long reportId;
/**
* 班次 1=甲班 2=乙班
*/
private String shift;
/**
* 日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date detailDate;
/**
* 成本项目ID
*/
private Long itemId;
/**
* 消耗用量
*/
private BigDecimal quantity;
/**
* 单价
*/
private BigDecimal unitPrice;
/**
* 总金额
*/
private BigDecimal amount;
/**
* 备注
*/
private String remark;
/**
* 删除标识 0=正常 2=删除
*/
@TableLogic
private Long delFlag;
}

View File

@@ -0,0 +1,58 @@
package com.klp.cost.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
/**
* 生产指标明细对象 cost_prod_metric
*
* @author klp
* @date 2026-05-25
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("cost_prod_metric")
public class CostProdMetric extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 主键ID
*/
@TableId(value = "metric_id")
private Long metricId;
/**
* 生产日报ID
*/
private Long reportId;
/**
* 指标编码
*/
private String metricCode;
/**
* 指标名称
*/
private String metricName;
/**
* 指标计算公式output_weight/input_weight*100
*/
private String metricFormula;
/**
* 指标计算结果值
*/
private BigDecimal metricValue;
/**
* 备注
*/
private String remark;
/**
* 删除标识 0=正常 2=删除
*/
@TableLogic
private Long delFlag;
}

View File

@@ -0,0 +1,63 @@
package com.klp.cost.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 生产月报对象 cost_prod_report
*
* @author klp
* @date 2026-05-25
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("cost_prod_report")
public class CostProdReport extends BaseEntity {
private static final long serialVersionUID=1L;
/**
* 主键ID
*/
@TableId(value = "report_id")
private Long reportId;
/**
* 报表标题
*/
private String reportTitle;
/**
* 报表日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date reportDate;
/**
* 产线类型 acid=酸轧 galvanized=镀锌
*/
private String lineType;
/**
* 投入量 单位:吨
*/
private BigDecimal inputWeight;
/**
* 产出量 单位:吨
*/
private BigDecimal outputWeight;
/**
* 备注
*/
private String remark;
/**
* 删除标识 0=正常 2=删除
*/
@TableLogic
private Long delFlag;
}

View File

@@ -0,0 +1,51 @@
package com.klp.cost.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
/**
* 成本项目配置业务对象 cost_item
*
* @author klp
* @date 2026-05-25
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class CostItemBo extends BaseEntity {
/**
* 主键ID
*/
private Long itemId;
/**
* 成本项目编码
*/
private String itemCode;
/**
* 成本项目名称
*/
private String itemName;
/**
* 成本分类 原料/能耗/辅料/设备/人工
*/
private String category;
/**
* 计量单位
*/
private String unit;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,52 @@
package com.klp.cost.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 成本单价历史业务对象 cost_price
*
* @author klp
* @date 2026-05-25
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class CostPriceBo extends BaseEntity {
/**
* 主键ID
*/
private Long priceId;
/**
* 成本项目ID
*/
private Long itemId;
/**
* 单价
*/
private BigDecimal price;
/**
* 生效日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date effectiveDate;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,72 @@
package com.klp.cost.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 生产成本明细业务对象 cost_prod_detail
*
* @author klp
* @date 2026-05-25
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class CostProdDetailBo extends BaseEntity {
/**
* 主键ID
*/
private Long detailId;
/**
* 生产月报ID
*/
private Long reportId;
/**
* 班次 1=甲班 2=乙班
*/
private String shift;
/**
* 日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date detailDate;
/**
* 成本项目ID
*/
private Long itemId;
/**
* 消耗用量
*/
private BigDecimal quantity;
/**
* 单价
*/
private BigDecimal unitPrice;
/**
* 总金额
*/
private BigDecimal amount;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,57 @@
package com.klp.cost.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.math.BigDecimal;
/**
* 生产指标明细业务对象 cost_prod_metric
*
* @author klp
* @date 2026-05-25
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class CostProdMetricBo extends BaseEntity {
/**
* 主键ID
*/
private Long metricId;
/**
* 生产日报ID
*/
private Long reportId;
/**
* 指标编码
*/
private String metricCode;
/**
* 指标名称
*/
private String metricName;
/**
* 指标计算公式output_weight/input_weight*100
*/
private String metricFormula;
/**
* 指标计算结果值
*/
private BigDecimal metricValue;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,62 @@
package com.klp.cost.domain.bo;
import com.klp.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 生产月报业务对象 cost_prod_report
*
* @author klp
* @date 2026-05-25
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class CostProdReportBo extends BaseEntity {
/**
* 主键ID
*/
private Long reportId;
/**
* 报表标题
*/
private String reportTitle;
/**
* 报表日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date reportDate;
/**
* 产线类型 acid=酸轧 galvanized=镀锌
*/
private String lineType;
/**
* 投入量 单位:吨
*/
private BigDecimal inputWeight;
/**
* 产出量 单位:吨
*/
private BigDecimal outputWeight;
/**
* 备注
*/
private String remark;
}

View File

@@ -0,0 +1,59 @@
package com.klp.cost.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 成本项目配置视图对象 cost_item
*
* @author klp
* @date 2026-05-25
*/
@Data
@ExcelIgnoreUnannotated
public class CostItemVo {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long itemId;
/**
* 成本项目编码
*/
@ExcelProperty(value = "成本项目编码")
private String itemCode;
/**
* 成本项目名称
*/
@ExcelProperty(value = "成本项目名称")
private String itemName;
/**
* 成本分类 原料/能耗/辅料/设备/人工
*/
@ExcelProperty(value = "成本分类 原料/能耗/辅料/设备/人工")
private String category;
/**
* 计量单位
*/
@ExcelProperty(value = "计量单位")
private String unit;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,56 @@
package com.klp.cost.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.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 成本单价历史视图对象 cost_price
*
* @author klp
* @date 2026-05-25
*/
@Data
@ExcelIgnoreUnannotated
public class CostPriceVo {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long priceId;
/**
* 成本项目ID
*/
@ExcelProperty(value = "成本项目ID")
private Long itemId;
/**
* 单价
*/
@ExcelProperty(value = "单价")
private BigDecimal price;
/**
* 生效日期
*/
@ExcelProperty(value = "生效日期")
private Date effectiveDate;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,80 @@
package com.klp.cost.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.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 生产成本明细视图对象 cost_prod_detail
*
* @author klp
* @date 2026-05-25
*/
@Data
@ExcelIgnoreUnannotated
public class CostProdDetailVo {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long detailId;
/**
* 生产月报ID
*/
@ExcelProperty(value = "生产月报ID")
private Long reportId;
/**
* 班次 1=甲班 2=乙班
*/
@ExcelProperty(value = "班次 1=甲班 2=乙班")
private String shift;
/**
* 日期
*/
@ExcelProperty(value = "日期")
private Date detailDate;
/**
* 成本项目ID
*/
@ExcelProperty(value = "成本项目ID")
private Long itemId;
/**
* 消耗用量
*/
@ExcelProperty(value = "消耗用量")
private BigDecimal quantity;
/**
* 单价
*/
@ExcelProperty(value = "单价")
private BigDecimal unitPrice;
/**
* 总金额
*/
@ExcelProperty(value = "总金额")
private BigDecimal amount;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,67 @@
package com.klp.cost.domain.vo;
import java.math.BigDecimal;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 生产指标明细视图对象 cost_prod_metric
*
* @author klp
* @date 2026-05-25
*/
@Data
@ExcelIgnoreUnannotated
public class CostProdMetricVo {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long metricId;
/**
* 生产日报ID
*/
@ExcelProperty(value = "生产日报ID")
private Long reportId;
/**
* 指标编码
*/
@ExcelProperty(value = "指标编码")
private String metricCode;
/**
* 指标名称
*/
@ExcelProperty(value = "指标名称")
private String metricName;
/**
* 指标计算公式output_weight/input_weight*100
*/
@ExcelProperty(value = "指标计算公式", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "如=output_weight/input_weight*100")
private String metricFormula;
/**
* 指标计算结果值
*/
@ExcelProperty(value = "指标计算结果值")
private BigDecimal metricValue;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,68 @@
package com.klp.cost.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.klp.common.annotation.ExcelDictFormat;
import com.klp.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 生产月报视图对象 cost_prod_report
*
* @author klp
* @date 2026-05-25
*/
@Data
@ExcelIgnoreUnannotated
public class CostProdReportVo {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long reportId;
/**
* 报表标题
*/
@ExcelProperty(value = "报表标题")
private String reportTitle;
/**
* 报表日期
*/
@ExcelProperty(value = "报表日期")
private Date reportDate;
/**
* 产线类型 acid=酸轧 galvanized=镀锌
*/
@ExcelProperty(value = "产线类型 acid=酸轧 galvanized=镀锌")
private String lineType;
/**
* 投入量 单位:吨
*/
@ExcelProperty(value = "投入量 单位:吨")
private BigDecimal inputWeight;
/**
* 产出量 单位:吨
*/
@ExcelProperty(value = "产出量 单位:吨")
private BigDecimal outputWeight;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}