diff --git a/pom.xml b/pom.xml
index 2565f144..23f55130 100644
--- a/pom.xml
+++ b/pom.xml
@@ -225,6 +225,13 @@
${ruoyi.version}
+
+
+ com.ruoyi
+ ruoyi-cost
+ ${ruoyi.version}
+
+
io.swagger
swagger-annotations
@@ -248,6 +255,7 @@
ruoyi-generator
ruoyi-common
ruoyi-mill
+ ruoyi-cost
pom
diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index da27ffe4..6a58c3f9 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -67,6 +67,12 @@
ruoyi-mill
+
+
+ com.ruoyi
+ ruoyi-cost
+
+
diff --git a/ruoyi-cost/src/main/java/com/ruoyi/cost/controller/CostItemController.java b/ruoyi-cost/src/main/java/com/ruoyi/cost/controller/CostItemController.java
new file mode 100644
index 00000000..b714f9c5
--- /dev/null
+++ b/ruoyi-cost/src/main/java/com/ruoyi/cost/controller/CostItemController.java
@@ -0,0 +1,104 @@
+package com.ruoyi.cost.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.cost.domain.CostItem;
+import com.ruoyi.cost.service.ICostItemService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 成本项目配置Controller
+ *
+ * @author ruoyi
+ * @date 2026-06-09
+ */
+@RestController
+@RequestMapping("/cost/item")
+public class CostItemController extends BaseController
+{
+ @Autowired
+ private ICostItemService costItemService;
+
+ /**
+ * 查询成本项目配置列表
+ */
+ @PreAuthorize("@ss.hasPermi('cost:item:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(CostItem costItem)
+ {
+ startPage();
+ List list = costItemService.selectCostItemList(costItem);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出成本项目配置列表
+ */
+ @PreAuthorize("@ss.hasPermi('cost:item:export')")
+ @Log(title = "成本项目配置", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, CostItem costItem)
+ {
+ List list = costItemService.selectCostItemList(costItem);
+ ExcelUtil util = new ExcelUtil(CostItem.class);
+ util.exportExcel(response, list, "成本项目配置数据");
+ }
+
+ /**
+ * 获取成本项目配置详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('cost:item:query')")
+ @GetMapping(value = "/{itemId}")
+ public AjaxResult getInfo(@PathVariable("itemId") Long itemId)
+ {
+ return success(costItemService.selectCostItemByItemId(itemId));
+ }
+
+ /**
+ * 新增成本项目配置
+ */
+ @PreAuthorize("@ss.hasPermi('cost:item:add')")
+ @Log(title = "成本项目配置", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody CostItem costItem)
+ {
+ return toAjax(costItemService.insertCostItem(costItem));
+ }
+
+ /**
+ * 修改成本项目配置
+ */
+ @PreAuthorize("@ss.hasPermi('cost:item:edit')")
+ @Log(title = "成本项目配置", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody CostItem costItem)
+ {
+ return toAjax(costItemService.updateCostItem(costItem));
+ }
+
+ /**
+ * 删除成本项目配置
+ */
+ @PreAuthorize("@ss.hasPermi('cost:item:remove')")
+ @Log(title = "成本项目配置", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{itemIds}")
+ public AjaxResult remove(@PathVariable Long[] itemIds)
+ {
+ return toAjax(costItemService.deleteCostItemByItemIds(itemIds));
+ }
+}
diff --git a/ruoyi-cost/src/main/java/com/ruoyi/cost/controller/CostPriceController.java b/ruoyi-cost/src/main/java/com/ruoyi/cost/controller/CostPriceController.java
new file mode 100644
index 00000000..b35df78c
--- /dev/null
+++ b/ruoyi-cost/src/main/java/com/ruoyi/cost/controller/CostPriceController.java
@@ -0,0 +1,104 @@
+package com.ruoyi.cost.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.cost.domain.CostPrice;
+import com.ruoyi.cost.service.ICostPriceService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 成本单价历史Controller
+ *
+ * @author ruoyi
+ * @date 2026-06-09
+ */
+@RestController
+@RequestMapping("/cost/price")
+public class CostPriceController extends BaseController
+{
+ @Autowired
+ private ICostPriceService costPriceService;
+
+ /**
+ * 查询成本单价历史列表
+ */
+ @PreAuthorize("@ss.hasPermi('cost:price:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(CostPrice costPrice)
+ {
+ startPage();
+ List list = costPriceService.selectCostPriceList(costPrice);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出成本单价历史列表
+ */
+ @PreAuthorize("@ss.hasPermi('cost:price:export')")
+ @Log(title = "成本单价历史", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, CostPrice costPrice)
+ {
+ List list = costPriceService.selectCostPriceList(costPrice);
+ ExcelUtil util = new ExcelUtil(CostPrice.class);
+ util.exportExcel(response, list, "成本单价历史数据");
+ }
+
+ /**
+ * 获取成本单价历史详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('cost:price:query')")
+ @GetMapping(value = "/{priceId}")
+ public AjaxResult getInfo(@PathVariable("priceId") Long priceId)
+ {
+ return success(costPriceService.selectCostPriceByPriceId(priceId));
+ }
+
+ /**
+ * 新增成本单价历史
+ */
+ @PreAuthorize("@ss.hasPermi('cost:price:add')")
+ @Log(title = "成本单价历史", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody CostPrice costPrice)
+ {
+ return toAjax(costPriceService.insertCostPrice(costPrice));
+ }
+
+ /**
+ * 修改成本单价历史
+ */
+ @PreAuthorize("@ss.hasPermi('cost:price:edit')")
+ @Log(title = "成本单价历史", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody CostPrice costPrice)
+ {
+ return toAjax(costPriceService.updateCostPrice(costPrice));
+ }
+
+ /**
+ * 删除成本单价历史
+ */
+ @PreAuthorize("@ss.hasPermi('cost:price:remove')")
+ @Log(title = "成本单价历史", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{priceIds}")
+ public AjaxResult remove(@PathVariable Long[] priceIds)
+ {
+ return toAjax(costPriceService.deleteCostPriceByPriceIds(priceIds));
+ }
+}
diff --git a/ruoyi-cost/src/main/java/com/ruoyi/cost/controller/CostProdDetailController.java b/ruoyi-cost/src/main/java/com/ruoyi/cost/controller/CostProdDetailController.java
new file mode 100644
index 00000000..14d51c0a
--- /dev/null
+++ b/ruoyi-cost/src/main/java/com/ruoyi/cost/controller/CostProdDetailController.java
@@ -0,0 +1,104 @@
+package com.ruoyi.cost.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.cost.domain.CostProdDetail;
+import com.ruoyi.cost.service.ICostProdDetailService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 生产成本明细Controller
+ *
+ * @author ruoyi
+ * @date 2026-06-09
+ */
+@RestController
+@RequestMapping("/cost/detail")
+public class CostProdDetailController extends BaseController
+{
+ @Autowired
+ private ICostProdDetailService costProdDetailService;
+
+ /**
+ * 查询生产成本明细列表
+ */
+ @PreAuthorize("@ss.hasPermi('cost:detail:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(CostProdDetail costProdDetail)
+ {
+ startPage();
+ List list = costProdDetailService.selectCostProdDetailList(costProdDetail);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出生产成本明细列表
+ */
+ @PreAuthorize("@ss.hasPermi('cost:detail:export')")
+ @Log(title = "生产成本明细", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, CostProdDetail costProdDetail)
+ {
+ List list = costProdDetailService.selectCostProdDetailList(costProdDetail);
+ ExcelUtil util = new ExcelUtil(CostProdDetail.class);
+ util.exportExcel(response, list, "生产成本明细数据");
+ }
+
+ /**
+ * 获取生产成本明细详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('cost:detail:query')")
+ @GetMapping(value = "/{detailId}")
+ public AjaxResult getInfo(@PathVariable("detailId") Long detailId)
+ {
+ return success(costProdDetailService.selectCostProdDetailByDetailId(detailId));
+ }
+
+ /**
+ * 新增生产成本明细
+ */
+ @PreAuthorize("@ss.hasPermi('cost:detail:add')")
+ @Log(title = "生产成本明细", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody CostProdDetail costProdDetail)
+ {
+ return toAjax(costProdDetailService.insertCostProdDetail(costProdDetail));
+ }
+
+ /**
+ * 修改生产成本明细
+ */
+ @PreAuthorize("@ss.hasPermi('cost:detail:edit')")
+ @Log(title = "生产成本明细", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody CostProdDetail costProdDetail)
+ {
+ return toAjax(costProdDetailService.updateCostProdDetail(costProdDetail));
+ }
+
+ /**
+ * 删除生产成本明细
+ */
+ @PreAuthorize("@ss.hasPermi('cost:detail:remove')")
+ @Log(title = "生产成本明细", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{detailIds}")
+ public AjaxResult remove(@PathVariable Long[] detailIds)
+ {
+ return toAjax(costProdDetailService.deleteCostProdDetailByDetailIds(detailIds));
+ }
+}
diff --git a/ruoyi-cost/src/main/java/com/ruoyi/cost/controller/CostProdMetricController.java b/ruoyi-cost/src/main/java/com/ruoyi/cost/controller/CostProdMetricController.java
new file mode 100644
index 00000000..76080e2e
--- /dev/null
+++ b/ruoyi-cost/src/main/java/com/ruoyi/cost/controller/CostProdMetricController.java
@@ -0,0 +1,104 @@
+package com.ruoyi.cost.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.cost.domain.CostProdMetric;
+import com.ruoyi.cost.service.ICostProdMetricService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 生产指标明细Controller
+ *
+ * @author ruoyi
+ * @date 2026-06-09
+ */
+@RestController
+@RequestMapping("/cost/metric")
+public class CostProdMetricController extends BaseController
+{
+ @Autowired
+ private ICostProdMetricService costProdMetricService;
+
+ /**
+ * 查询生产指标明细列表
+ */
+ @PreAuthorize("@ss.hasPermi('cost:metric:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(CostProdMetric costProdMetric)
+ {
+ startPage();
+ List list = costProdMetricService.selectCostProdMetricList(costProdMetric);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出生产指标明细列表
+ */
+ @PreAuthorize("@ss.hasPermi('cost:metric:export')")
+ @Log(title = "生产指标明细", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, CostProdMetric costProdMetric)
+ {
+ List list = costProdMetricService.selectCostProdMetricList(costProdMetric);
+ ExcelUtil util = new ExcelUtil(CostProdMetric.class);
+ util.exportExcel(response, list, "生产指标明细数据");
+ }
+
+ /**
+ * 获取生产指标明细详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('cost:metric:query')")
+ @GetMapping(value = "/{metricId}")
+ public AjaxResult getInfo(@PathVariable("metricId") Long metricId)
+ {
+ return success(costProdMetricService.selectCostProdMetricByMetricId(metricId));
+ }
+
+ /**
+ * 新增生产指标明细
+ */
+ @PreAuthorize("@ss.hasPermi('cost:metric:add')")
+ @Log(title = "生产指标明细", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody CostProdMetric costProdMetric)
+ {
+ return toAjax(costProdMetricService.insertCostProdMetric(costProdMetric));
+ }
+
+ /**
+ * 修改生产指标明细
+ */
+ @PreAuthorize("@ss.hasPermi('cost:metric:edit')")
+ @Log(title = "生产指标明细", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody CostProdMetric costProdMetric)
+ {
+ return toAjax(costProdMetricService.updateCostProdMetric(costProdMetric));
+ }
+
+ /**
+ * 删除生产指标明细
+ */
+ @PreAuthorize("@ss.hasPermi('cost:metric:remove')")
+ @Log(title = "生产指标明细", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{metricIds}")
+ public AjaxResult remove(@PathVariable Long[] metricIds)
+ {
+ return toAjax(costProdMetricService.deleteCostProdMetricByMetricIds(metricIds));
+ }
+}
diff --git a/ruoyi-cost/src/main/java/com/ruoyi/cost/controller/CostProdReportController.java b/ruoyi-cost/src/main/java/com/ruoyi/cost/controller/CostProdReportController.java
new file mode 100644
index 00000000..c2a8e61d
--- /dev/null
+++ b/ruoyi-cost/src/main/java/com/ruoyi/cost/controller/CostProdReportController.java
@@ -0,0 +1,104 @@
+package com.ruoyi.cost.controller;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.cost.domain.CostProdReport;
+import com.ruoyi.cost.service.ICostProdReportService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 生产月报Controller
+ *
+ * @author ruoyi
+ * @date 2026-06-09
+ */
+@RestController
+@RequestMapping("/cost/report")
+public class CostProdReportController extends BaseController
+{
+ @Autowired
+ private ICostProdReportService costProdReportService;
+
+ /**
+ * 查询生产月报列表
+ */
+ @PreAuthorize("@ss.hasPermi('cost:report:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(CostProdReport costProdReport)
+ {
+ startPage();
+ List list = costProdReportService.selectCostProdReportList(costProdReport);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出生产月报列表
+ */
+ @PreAuthorize("@ss.hasPermi('cost:report:export')")
+ @Log(title = "生产月报", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, CostProdReport costProdReport)
+ {
+ List list = costProdReportService.selectCostProdReportList(costProdReport);
+ ExcelUtil util = new ExcelUtil(CostProdReport.class);
+ util.exportExcel(response, list, "生产月报数据");
+ }
+
+ /**
+ * 获取生产月报详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('cost:report:query')")
+ @GetMapping(value = "/{reportId}")
+ public AjaxResult getInfo(@PathVariable("reportId") Long reportId)
+ {
+ return success(costProdReportService.selectCostProdReportByReportId(reportId));
+ }
+
+ /**
+ * 新增生产月报
+ */
+ @PreAuthorize("@ss.hasPermi('cost:report:add')")
+ @Log(title = "生产月报", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody CostProdReport costProdReport)
+ {
+ return toAjax(costProdReportService.insertCostProdReport(costProdReport));
+ }
+
+ /**
+ * 修改生产月报
+ */
+ @PreAuthorize("@ss.hasPermi('cost:report:edit')")
+ @Log(title = "生产月报", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody CostProdReport costProdReport)
+ {
+ return toAjax(costProdReportService.updateCostProdReport(costProdReport));
+ }
+
+ /**
+ * 删除生产月报
+ */
+ @PreAuthorize("@ss.hasPermi('cost:report:remove')")
+ @Log(title = "生产月报", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{reportIds}")
+ public AjaxResult remove(@PathVariable Long[] reportIds)
+ {
+ return toAjax(costProdReportService.deleteCostProdReportByReportIds(reportIds));
+ }
+}
diff --git a/ruoyi-cost/src/main/java/com/ruoyi/cost/domain/CostItem.java b/ruoyi-cost/src/main/java/com/ruoyi/cost/domain/CostItem.java
new file mode 100644
index 00000000..e5c4f62a
--- /dev/null
+++ b/ruoyi-cost/src/main/java/com/ruoyi/cost/domain/CostItem.java
@@ -0,0 +1,131 @@
+package com.ruoyi.cost.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 成本项目配置对象 cost_item
+ *
+ * @author ruoyi
+ * @date 2026-06-09
+ */
+public class CostItem extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 主键ID */
+ private Long itemId;
+
+ /** 成本项目编码 */
+ @Excel(name = "成本项目编码")
+ private String itemCode;
+
+ /** 成本项目名称 */
+ @Excel(name = "成本项目名称")
+ private String itemName;
+
+ /** 成本分类 原料/能耗/辅料/设备/人工 */
+ @Excel(name = "成本分类 原料/能耗/辅料/设备/人工")
+ private String category;
+
+ /** 计量单位 */
+ @Excel(name = "计量单位")
+ private String unit;
+
+ /** 查询条件(JSON格式) */
+ @Excel(name = "查询条件", readConverterExp = "J=SON格式")
+ private String queryCondition;
+
+ /** 删除标识 0=正常 2=删除 */
+ private Long delFlag;
+
+ public void setItemId(Long itemId)
+ {
+ this.itemId = itemId;
+ }
+
+ public Long getItemId()
+ {
+ return itemId;
+ }
+
+ public void setItemCode(String itemCode)
+ {
+ this.itemCode = itemCode;
+ }
+
+ public String getItemCode()
+ {
+ return itemCode;
+ }
+
+ public void setItemName(String itemName)
+ {
+ this.itemName = itemName;
+ }
+
+ public String getItemName()
+ {
+ return itemName;
+ }
+
+ public void setCategory(String category)
+ {
+ this.category = category;
+ }
+
+ public String getCategory()
+ {
+ return category;
+ }
+
+ public void setUnit(String unit)
+ {
+ this.unit = unit;
+ }
+
+ public String getUnit()
+ {
+ return unit;
+ }
+
+ public void setQueryCondition(String queryCondition)
+ {
+ this.queryCondition = queryCondition;
+ }
+
+ public String getQueryCondition()
+ {
+ return queryCondition;
+ }
+
+ public void setDelFlag(Long delFlag)
+ {
+ this.delFlag = delFlag;
+ }
+
+ public Long getDelFlag()
+ {
+ return delFlag;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("itemId", getItemId())
+ .append("itemCode", getItemCode())
+ .append("itemName", getItemName())
+ .append("category", getCategory())
+ .append("unit", getUnit())
+ .append("remark", getRemark())
+ .append("queryCondition", getQueryCondition())
+ .append("delFlag", getDelFlag())
+ .append("createBy", getCreateBy())
+ .append("createTime", getCreateTime())
+ .append("updateBy", getUpdateBy())
+ .append("updateTime", getUpdateTime())
+ .toString();
+ }
+}
diff --git a/ruoyi-cost/src/main/java/com/ruoyi/cost/domain/CostPrice.java b/ruoyi-cost/src/main/java/com/ruoyi/cost/domain/CostPrice.java
new file mode 100644
index 00000000..d01bca81
--- /dev/null
+++ b/ruoyi-cost/src/main/java/com/ruoyi/cost/domain/CostPrice.java
@@ -0,0 +1,105 @@
+package com.ruoyi.cost.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 成本单价历史对象 cost_price
+ *
+ * @author ruoyi
+ * @date 2026-06-09
+ */
+public class CostPrice extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 主键ID */
+ private Long priceId;
+
+ /** 成本项目ID */
+ @Excel(name = "成本项目ID")
+ private Long itemId;
+
+ /** 单价 */
+ @Excel(name = "单价")
+ private BigDecimal price;
+
+ /** 生效日期 */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "生效日期", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date effectiveDate;
+
+ /** 删除标识 0=正常 2=删除 */
+ private Long delFlag;
+
+ public void setPriceId(Long priceId)
+ {
+ this.priceId = priceId;
+ }
+
+ public Long getPriceId()
+ {
+ return priceId;
+ }
+
+ public void setItemId(Long itemId)
+ {
+ this.itemId = itemId;
+ }
+
+ public Long getItemId()
+ {
+ return itemId;
+ }
+
+ public void setPrice(BigDecimal price)
+ {
+ this.price = price;
+ }
+
+ public BigDecimal getPrice()
+ {
+ return price;
+ }
+
+ public void setEffectiveDate(Date effectiveDate)
+ {
+ this.effectiveDate = effectiveDate;
+ }
+
+ public Date getEffectiveDate()
+ {
+ return effectiveDate;
+ }
+
+ public void setDelFlag(Long delFlag)
+ {
+ this.delFlag = delFlag;
+ }
+
+ public Long getDelFlag()
+ {
+ return delFlag;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("priceId", getPriceId())
+ .append("itemId", getItemId())
+ .append("price", getPrice())
+ .append("effectiveDate", getEffectiveDate())
+ .append("remark", getRemark())
+ .append("delFlag", getDelFlag())
+ .append("createBy", getCreateBy())
+ .append("createTime", getCreateTime())
+ .append("updateBy", getUpdateBy())
+ .append("updateTime", getUpdateTime())
+ .toString();
+ }
+}
diff --git a/ruoyi-cost/src/main/java/com/ruoyi/cost/domain/CostProdDetail.java b/ruoyi-cost/src/main/java/com/ruoyi/cost/domain/CostProdDetail.java
new file mode 100644
index 00000000..a746e4e6
--- /dev/null
+++ b/ruoyi-cost/src/main/java/com/ruoyi/cost/domain/CostProdDetail.java
@@ -0,0 +1,165 @@
+package com.ruoyi.cost.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 生产成本明细对象 cost_prod_detail
+ *
+ * @author ruoyi
+ * @date 2026-06-09
+ */
+public class CostProdDetail extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 主键ID */
+ private Long detailId;
+
+ /** 生产月报ID */
+ @Excel(name = "生产月报ID")
+ private Long reportId;
+
+ /** 班次 1=甲班 2=乙班 */
+ @Excel(name = "班次 1=甲班 2=乙班")
+ private String shift;
+
+ /** 日期 */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "日期", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date detailDate;
+
+ /** 成本项目ID */
+ @Excel(name = "成本项目ID")
+ private Long itemId;
+
+ /** 消耗用量 */
+ @Excel(name = "消耗用量")
+ private BigDecimal quantity;
+
+ /** 单价 */
+ @Excel(name = "单价")
+ private BigDecimal unitPrice;
+
+ /** 总金额 */
+ @Excel(name = "总金额")
+ private BigDecimal amount;
+
+ /** 删除标识 0=正常 2=删除 */
+ private Long delFlag;
+
+ public void setDetailId(Long detailId)
+ {
+ this.detailId = detailId;
+ }
+
+ public Long getDetailId()
+ {
+ return detailId;
+ }
+
+ public void setReportId(Long reportId)
+ {
+ this.reportId = reportId;
+ }
+
+ public Long getReportId()
+ {
+ return reportId;
+ }
+
+ public void setShift(String shift)
+ {
+ this.shift = shift;
+ }
+
+ public String getShift()
+ {
+ return shift;
+ }
+
+ public void setDetailDate(Date detailDate)
+ {
+ this.detailDate = detailDate;
+ }
+
+ public Date getDetailDate()
+ {
+ return detailDate;
+ }
+
+ public void setItemId(Long itemId)
+ {
+ this.itemId = itemId;
+ }
+
+ public Long getItemId()
+ {
+ return itemId;
+ }
+
+ public void setQuantity(BigDecimal quantity)
+ {
+ this.quantity = quantity;
+ }
+
+ public BigDecimal getQuantity()
+ {
+ return quantity;
+ }
+
+ public void setUnitPrice(BigDecimal unitPrice)
+ {
+ this.unitPrice = unitPrice;
+ }
+
+ public BigDecimal getUnitPrice()
+ {
+ return unitPrice;
+ }
+
+ public void setAmount(BigDecimal amount)
+ {
+ this.amount = amount;
+ }
+
+ public BigDecimal getAmount()
+ {
+ return amount;
+ }
+
+ public void setDelFlag(Long delFlag)
+ {
+ this.delFlag = delFlag;
+ }
+
+ public Long getDelFlag()
+ {
+ return delFlag;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("detailId", getDetailId())
+ .append("reportId", getReportId())
+ .append("shift", getShift())
+ .append("detailDate", getDetailDate())
+ .append("itemId", getItemId())
+ .append("quantity", getQuantity())
+ .append("unitPrice", getUnitPrice())
+ .append("amount", getAmount())
+ .append("remark", getRemark())
+ .append("delFlag", getDelFlag())
+ .append("createBy", getCreateBy())
+ .append("createTime", getCreateTime())
+ .append("updateBy", getUpdateBy())
+ .append("updateTime", getUpdateTime())
+ .toString();
+ }
+}
diff --git a/ruoyi-cost/src/main/java/com/ruoyi/cost/domain/CostProdMetric.java b/ruoyi-cost/src/main/java/com/ruoyi/cost/domain/CostProdMetric.java
new file mode 100644
index 00000000..990b0fcc
--- /dev/null
+++ b/ruoyi-cost/src/main/java/com/ruoyi/cost/domain/CostProdMetric.java
@@ -0,0 +1,132 @@
+package com.ruoyi.cost.domain;
+
+import java.math.BigDecimal;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 生产指标明细对象 cost_prod_metric
+ *
+ * @author ruoyi
+ * @date 2026-06-09
+ */
+public class CostProdMetric extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 主键ID */
+ private Long metricId;
+
+ /** 生产日报ID */
+ @Excel(name = "生产日报ID")
+ private Long reportId;
+
+ /** 指标编码 */
+ @Excel(name = "指标编码")
+ private String metricCode;
+
+ /** 指标名称 */
+ @Excel(name = "指标名称")
+ private String metricName;
+
+ /** 指标计算公式(如:output_weight/input_weight*100) */
+ @Excel(name = "指标计算公式", readConverterExp = "如=:output_weight/input_weight*100")
+ private String metricFormula;
+
+ /** 指标计算结果值 */
+ @Excel(name = "指标计算结果值")
+ private BigDecimal metricValue;
+
+ /** 删除标识 0=正常 2=删除 */
+ private Long delFlag;
+
+ public void setMetricId(Long metricId)
+ {
+ this.metricId = metricId;
+ }
+
+ public Long getMetricId()
+ {
+ return metricId;
+ }
+
+ public void setReportId(Long reportId)
+ {
+ this.reportId = reportId;
+ }
+
+ public Long getReportId()
+ {
+ return reportId;
+ }
+
+ public void setMetricCode(String metricCode)
+ {
+ this.metricCode = metricCode;
+ }
+
+ public String getMetricCode()
+ {
+ return metricCode;
+ }
+
+ public void setMetricName(String metricName)
+ {
+ this.metricName = metricName;
+ }
+
+ public String getMetricName()
+ {
+ return metricName;
+ }
+
+ public void setMetricFormula(String metricFormula)
+ {
+ this.metricFormula = metricFormula;
+ }
+
+ public String getMetricFormula()
+ {
+ return metricFormula;
+ }
+
+ public void setMetricValue(BigDecimal metricValue)
+ {
+ this.metricValue = metricValue;
+ }
+
+ public BigDecimal getMetricValue()
+ {
+ return metricValue;
+ }
+
+ public void setDelFlag(Long delFlag)
+ {
+ this.delFlag = delFlag;
+ }
+
+ public Long getDelFlag()
+ {
+ return delFlag;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("metricId", getMetricId())
+ .append("reportId", getReportId())
+ .append("metricCode", getMetricCode())
+ .append("metricName", getMetricName())
+ .append("metricFormula", getMetricFormula())
+ .append("metricValue", getMetricValue())
+ .append("remark", getRemark())
+ .append("delFlag", getDelFlag())
+ .append("createBy", getCreateBy())
+ .append("createTime", getCreateTime())
+ .append("updateBy", getUpdateBy())
+ .append("updateTime", getUpdateTime())
+ .toString();
+ }
+}
diff --git a/ruoyi-cost/src/main/java/com/ruoyi/cost/domain/CostProdReport.java b/ruoyi-cost/src/main/java/com/ruoyi/cost/domain/CostProdReport.java
new file mode 100644
index 00000000..399fd43a
--- /dev/null
+++ b/ruoyi-cost/src/main/java/com/ruoyi/cost/domain/CostProdReport.java
@@ -0,0 +1,150 @@
+package com.ruoyi.cost.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 生产月报对象 cost_prod_report
+ *
+ * @author ruoyi
+ * @date 2026-06-09
+ */
+public class CostProdReport extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 主键ID */
+ private Long reportId;
+
+ /** 报表标题 */
+ @Excel(name = "报表标题")
+ private String reportTitle;
+
+ /** 报表日期 */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "报表日期", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date reportDate;
+
+ /** 产线类型 acid=酸轧 galvanized=镀锌 */
+ @Excel(name = "产线类型 acid=酸轧 galvanized=镀锌")
+ private String lineType;
+
+ /** 投入量 单位:吨 */
+ @Excel(name = "投入量 单位:吨")
+ private BigDecimal inputWeight;
+
+ /** 产出量 单位:吨 */
+ @Excel(name = "产出量 单位:吨")
+ private BigDecimal outputWeight;
+
+ /** 删除标识 0=正常 2=删除 */
+ private Long delFlag;
+
+ /** 表格配置 */
+ @Excel(name = "表格配置")
+ private String colConfig;
+
+ public void setReportId(Long reportId)
+ {
+ this.reportId = reportId;
+ }
+
+ public Long getReportId()
+ {
+ return reportId;
+ }
+
+ public void setReportTitle(String reportTitle)
+ {
+ this.reportTitle = reportTitle;
+ }
+
+ public String getReportTitle()
+ {
+ return reportTitle;
+ }
+
+ public void setReportDate(Date reportDate)
+ {
+ this.reportDate = reportDate;
+ }
+
+ public Date getReportDate()
+ {
+ return reportDate;
+ }
+
+ public void setLineType(String lineType)
+ {
+ this.lineType = lineType;
+ }
+
+ public String getLineType()
+ {
+ return lineType;
+ }
+
+ public void setInputWeight(BigDecimal inputWeight)
+ {
+ this.inputWeight = inputWeight;
+ }
+
+ public BigDecimal getInputWeight()
+ {
+ return inputWeight;
+ }
+
+ public void setOutputWeight(BigDecimal outputWeight)
+ {
+ this.outputWeight = outputWeight;
+ }
+
+ public BigDecimal getOutputWeight()
+ {
+ return outputWeight;
+ }
+
+ public void setDelFlag(Long delFlag)
+ {
+ this.delFlag = delFlag;
+ }
+
+ public Long getDelFlag()
+ {
+ return delFlag;
+ }
+
+ public void setColConfig(String colConfig)
+ {
+ this.colConfig = colConfig;
+ }
+
+ public String getColConfig()
+ {
+ return colConfig;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("reportId", getReportId())
+ .append("reportTitle", getReportTitle())
+ .append("reportDate", getReportDate())
+ .append("lineType", getLineType())
+ .append("inputWeight", getInputWeight())
+ .append("outputWeight", getOutputWeight())
+ .append("remark", getRemark())
+ .append("delFlag", getDelFlag())
+ .append("createBy", getCreateBy())
+ .append("createTime", getCreateTime())
+ .append("updateBy", getUpdateBy())
+ .append("updateTime", getUpdateTime())
+ .append("colConfig", getColConfig())
+ .toString();
+ }
+}
diff --git a/ruoyi-cost/src/main/java/com/ruoyi/cost/mapper/CostItemMapper.java b/ruoyi-cost/src/main/java/com/ruoyi/cost/mapper/CostItemMapper.java
new file mode 100644
index 00000000..518a28c7
--- /dev/null
+++ b/ruoyi-cost/src/main/java/com/ruoyi/cost/mapper/CostItemMapper.java
@@ -0,0 +1,61 @@
+package com.ruoyi.cost.mapper;
+
+import java.util.List;
+import com.ruoyi.cost.domain.CostItem;
+
+/**
+ * 成本项目配置Mapper接口
+ *
+ * @author ruoyi
+ * @date 2026-06-09
+ */
+public interface CostItemMapper
+{
+ /**
+ * 查询成本项目配置
+ *
+ * @param itemId 成本项目配置主键
+ * @return 成本项目配置
+ */
+ public CostItem selectCostItemByItemId(Long itemId);
+
+ /**
+ * 查询成本项目配置列表
+ *
+ * @param costItem 成本项目配置
+ * @return 成本项目配置集合
+ */
+ public List selectCostItemList(CostItem costItem);
+
+ /**
+ * 新增成本项目配置
+ *
+ * @param costItem 成本项目配置
+ * @return 结果
+ */
+ public int insertCostItem(CostItem costItem);
+
+ /**
+ * 修改成本项目配置
+ *
+ * @param costItem 成本项目配置
+ * @return 结果
+ */
+ public int updateCostItem(CostItem costItem);
+
+ /**
+ * 删除成本项目配置
+ *
+ * @param itemId 成本项目配置主键
+ * @return 结果
+ */
+ public int deleteCostItemByItemId(Long itemId);
+
+ /**
+ * 批量删除成本项目配置
+ *
+ * @param itemIds 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteCostItemByItemIds(Long[] itemIds);
+}
diff --git a/ruoyi-cost/src/main/java/com/ruoyi/cost/mapper/CostPriceMapper.java b/ruoyi-cost/src/main/java/com/ruoyi/cost/mapper/CostPriceMapper.java
new file mode 100644
index 00000000..0b56b36e
--- /dev/null
+++ b/ruoyi-cost/src/main/java/com/ruoyi/cost/mapper/CostPriceMapper.java
@@ -0,0 +1,61 @@
+package com.ruoyi.cost.mapper;
+
+import java.util.List;
+import com.ruoyi.cost.domain.CostPrice;
+
+/**
+ * 成本单价历史Mapper接口
+ *
+ * @author ruoyi
+ * @date 2026-06-09
+ */
+public interface CostPriceMapper
+{
+ /**
+ * 查询成本单价历史
+ *
+ * @param priceId 成本单价历史主键
+ * @return 成本单价历史
+ */
+ public CostPrice selectCostPriceByPriceId(Long priceId);
+
+ /**
+ * 查询成本单价历史列表
+ *
+ * @param costPrice 成本单价历史
+ * @return 成本单价历史集合
+ */
+ public List selectCostPriceList(CostPrice costPrice);
+
+ /**
+ * 新增成本单价历史
+ *
+ * @param costPrice 成本单价历史
+ * @return 结果
+ */
+ public int insertCostPrice(CostPrice costPrice);
+
+ /**
+ * 修改成本单价历史
+ *
+ * @param costPrice 成本单价历史
+ * @return 结果
+ */
+ public int updateCostPrice(CostPrice costPrice);
+
+ /**
+ * 删除成本单价历史
+ *
+ * @param priceId 成本单价历史主键
+ * @return 结果
+ */
+ public int deleteCostPriceByPriceId(Long priceId);
+
+ /**
+ * 批量删除成本单价历史
+ *
+ * @param priceIds 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteCostPriceByPriceIds(Long[] priceIds);
+}
diff --git a/ruoyi-cost/src/main/java/com/ruoyi/cost/mapper/CostProdDetailMapper.java b/ruoyi-cost/src/main/java/com/ruoyi/cost/mapper/CostProdDetailMapper.java
new file mode 100644
index 00000000..db252c09
--- /dev/null
+++ b/ruoyi-cost/src/main/java/com/ruoyi/cost/mapper/CostProdDetailMapper.java
@@ -0,0 +1,61 @@
+package com.ruoyi.cost.mapper;
+
+import java.util.List;
+import com.ruoyi.cost.domain.CostProdDetail;
+
+/**
+ * 生产成本明细Mapper接口
+ *
+ * @author ruoyi
+ * @date 2026-06-09
+ */
+public interface CostProdDetailMapper
+{
+ /**
+ * 查询生产成本明细
+ *
+ * @param detailId 生产成本明细主键
+ * @return 生产成本明细
+ */
+ public CostProdDetail selectCostProdDetailByDetailId(Long detailId);
+
+ /**
+ * 查询生产成本明细列表
+ *
+ * @param costProdDetail 生产成本明细
+ * @return 生产成本明细集合
+ */
+ public List selectCostProdDetailList(CostProdDetail costProdDetail);
+
+ /**
+ * 新增生产成本明细
+ *
+ * @param costProdDetail 生产成本明细
+ * @return 结果
+ */
+ public int insertCostProdDetail(CostProdDetail costProdDetail);
+
+ /**
+ * 修改生产成本明细
+ *
+ * @param costProdDetail 生产成本明细
+ * @return 结果
+ */
+ public int updateCostProdDetail(CostProdDetail costProdDetail);
+
+ /**
+ * 删除生产成本明细
+ *
+ * @param detailId 生产成本明细主键
+ * @return 结果
+ */
+ public int deleteCostProdDetailByDetailId(Long detailId);
+
+ /**
+ * 批量删除生产成本明细
+ *
+ * @param detailIds 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteCostProdDetailByDetailIds(Long[] detailIds);
+}
diff --git a/ruoyi-cost/src/main/java/com/ruoyi/cost/mapper/CostProdMetricMapper.java b/ruoyi-cost/src/main/java/com/ruoyi/cost/mapper/CostProdMetricMapper.java
new file mode 100644
index 00000000..145ab717
--- /dev/null
+++ b/ruoyi-cost/src/main/java/com/ruoyi/cost/mapper/CostProdMetricMapper.java
@@ -0,0 +1,61 @@
+package com.ruoyi.cost.mapper;
+
+import java.util.List;
+import com.ruoyi.cost.domain.CostProdMetric;
+
+/**
+ * 生产指标明细Mapper接口
+ *
+ * @author ruoyi
+ * @date 2026-06-09
+ */
+public interface CostProdMetricMapper
+{
+ /**
+ * 查询生产指标明细
+ *
+ * @param metricId 生产指标明细主键
+ * @return 生产指标明细
+ */
+ public CostProdMetric selectCostProdMetricByMetricId(Long metricId);
+
+ /**
+ * 查询生产指标明细列表
+ *
+ * @param costProdMetric 生产指标明细
+ * @return 生产指标明细集合
+ */
+ public List selectCostProdMetricList(CostProdMetric costProdMetric);
+
+ /**
+ * 新增生产指标明细
+ *
+ * @param costProdMetric 生产指标明细
+ * @return 结果
+ */
+ public int insertCostProdMetric(CostProdMetric costProdMetric);
+
+ /**
+ * 修改生产指标明细
+ *
+ * @param costProdMetric 生产指标明细
+ * @return 结果
+ */
+ public int updateCostProdMetric(CostProdMetric costProdMetric);
+
+ /**
+ * 删除生产指标明细
+ *
+ * @param metricId 生产指标明细主键
+ * @return 结果
+ */
+ public int deleteCostProdMetricByMetricId(Long metricId);
+
+ /**
+ * 批量删除生产指标明细
+ *
+ * @param metricIds 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteCostProdMetricByMetricIds(Long[] metricIds);
+}
diff --git a/ruoyi-cost/src/main/java/com/ruoyi/cost/mapper/CostProdReportMapper.java b/ruoyi-cost/src/main/java/com/ruoyi/cost/mapper/CostProdReportMapper.java
new file mode 100644
index 00000000..091b12f3
--- /dev/null
+++ b/ruoyi-cost/src/main/java/com/ruoyi/cost/mapper/CostProdReportMapper.java
@@ -0,0 +1,61 @@
+package com.ruoyi.cost.mapper;
+
+import java.util.List;
+import com.ruoyi.cost.domain.CostProdReport;
+
+/**
+ * 生产月报Mapper接口
+ *
+ * @author ruoyi
+ * @date 2026-06-09
+ */
+public interface CostProdReportMapper
+{
+ /**
+ * 查询生产月报
+ *
+ * @param reportId 生产月报主键
+ * @return 生产月报
+ */
+ public CostProdReport selectCostProdReportByReportId(Long reportId);
+
+ /**
+ * 查询生产月报列表
+ *
+ * @param costProdReport 生产月报
+ * @return 生产月报集合
+ */
+ public List selectCostProdReportList(CostProdReport costProdReport);
+
+ /**
+ * 新增生产月报
+ *
+ * @param costProdReport 生产月报
+ * @return 结果
+ */
+ public int insertCostProdReport(CostProdReport costProdReport);
+
+ /**
+ * 修改生产月报
+ *
+ * @param costProdReport 生产月报
+ * @return 结果
+ */
+ public int updateCostProdReport(CostProdReport costProdReport);
+
+ /**
+ * 删除生产月报
+ *
+ * @param reportId 生产月报主键
+ * @return 结果
+ */
+ public int deleteCostProdReportByReportId(Long reportId);
+
+ /**
+ * 批量删除生产月报
+ *
+ * @param reportIds 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteCostProdReportByReportIds(Long[] reportIds);
+}
diff --git a/ruoyi-cost/src/main/java/com/ruoyi/cost/service/ICostItemService.java b/ruoyi-cost/src/main/java/com/ruoyi/cost/service/ICostItemService.java
new file mode 100644
index 00000000..fb750dac
--- /dev/null
+++ b/ruoyi-cost/src/main/java/com/ruoyi/cost/service/ICostItemService.java
@@ -0,0 +1,61 @@
+package com.ruoyi.cost.service;
+
+import java.util.List;
+import com.ruoyi.cost.domain.CostItem;
+
+/**
+ * 成本项目配置Service接口
+ *
+ * @author ruoyi
+ * @date 2026-06-09
+ */
+public interface ICostItemService
+{
+ /**
+ * 查询成本项目配置
+ *
+ * @param itemId 成本项目配置主键
+ * @return 成本项目配置
+ */
+ public CostItem selectCostItemByItemId(Long itemId);
+
+ /**
+ * 查询成本项目配置列表
+ *
+ * @param costItem 成本项目配置
+ * @return 成本项目配置集合
+ */
+ public List selectCostItemList(CostItem costItem);
+
+ /**
+ * 新增成本项目配置
+ *
+ * @param costItem 成本项目配置
+ * @return 结果
+ */
+ public int insertCostItem(CostItem costItem);
+
+ /**
+ * 修改成本项目配置
+ *
+ * @param costItem 成本项目配置
+ * @return 结果
+ */
+ public int updateCostItem(CostItem costItem);
+
+ /**
+ * 批量删除成本项目配置
+ *
+ * @param itemIds 需要删除的成本项目配置主键集合
+ * @return 结果
+ */
+ public int deleteCostItemByItemIds(Long[] itemIds);
+
+ /**
+ * 删除成本项目配置信息
+ *
+ * @param itemId 成本项目配置主键
+ * @return 结果
+ */
+ public int deleteCostItemByItemId(Long itemId);
+}
diff --git a/ruoyi-cost/src/main/java/com/ruoyi/cost/service/ICostPriceService.java b/ruoyi-cost/src/main/java/com/ruoyi/cost/service/ICostPriceService.java
new file mode 100644
index 00000000..e87cb52b
--- /dev/null
+++ b/ruoyi-cost/src/main/java/com/ruoyi/cost/service/ICostPriceService.java
@@ -0,0 +1,61 @@
+package com.ruoyi.cost.service;
+
+import java.util.List;
+import com.ruoyi.cost.domain.CostPrice;
+
+/**
+ * 成本单价历史Service接口
+ *
+ * @author ruoyi
+ * @date 2026-06-09
+ */
+public interface ICostPriceService
+{
+ /**
+ * 查询成本单价历史
+ *
+ * @param priceId 成本单价历史主键
+ * @return 成本单价历史
+ */
+ public CostPrice selectCostPriceByPriceId(Long priceId);
+
+ /**
+ * 查询成本单价历史列表
+ *
+ * @param costPrice 成本单价历史
+ * @return 成本单价历史集合
+ */
+ public List selectCostPriceList(CostPrice costPrice);
+
+ /**
+ * 新增成本单价历史
+ *
+ * @param costPrice 成本单价历史
+ * @return 结果
+ */
+ public int insertCostPrice(CostPrice costPrice);
+
+ /**
+ * 修改成本单价历史
+ *
+ * @param costPrice 成本单价历史
+ * @return 结果
+ */
+ public int updateCostPrice(CostPrice costPrice);
+
+ /**
+ * 批量删除成本单价历史
+ *
+ * @param priceIds 需要删除的成本单价历史主键集合
+ * @return 结果
+ */
+ public int deleteCostPriceByPriceIds(Long[] priceIds);
+
+ /**
+ * 删除成本单价历史信息
+ *
+ * @param priceId 成本单价历史主键
+ * @return 结果
+ */
+ public int deleteCostPriceByPriceId(Long priceId);
+}
diff --git a/ruoyi-cost/src/main/java/com/ruoyi/cost/service/ICostProdDetailService.java b/ruoyi-cost/src/main/java/com/ruoyi/cost/service/ICostProdDetailService.java
new file mode 100644
index 00000000..ad2b7001
--- /dev/null
+++ b/ruoyi-cost/src/main/java/com/ruoyi/cost/service/ICostProdDetailService.java
@@ -0,0 +1,61 @@
+package com.ruoyi.cost.service;
+
+import java.util.List;
+import com.ruoyi.cost.domain.CostProdDetail;
+
+/**
+ * 生产成本明细Service接口
+ *
+ * @author ruoyi
+ * @date 2026-06-09
+ */
+public interface ICostProdDetailService
+{
+ /**
+ * 查询生产成本明细
+ *
+ * @param detailId 生产成本明细主键
+ * @return 生产成本明细
+ */
+ public CostProdDetail selectCostProdDetailByDetailId(Long detailId);
+
+ /**
+ * 查询生产成本明细列表
+ *
+ * @param costProdDetail 生产成本明细
+ * @return 生产成本明细集合
+ */
+ public List selectCostProdDetailList(CostProdDetail costProdDetail);
+
+ /**
+ * 新增生产成本明细
+ *
+ * @param costProdDetail 生产成本明细
+ * @return 结果
+ */
+ public int insertCostProdDetail(CostProdDetail costProdDetail);
+
+ /**
+ * 修改生产成本明细
+ *
+ * @param costProdDetail 生产成本明细
+ * @return 结果
+ */
+ public int updateCostProdDetail(CostProdDetail costProdDetail);
+
+ /**
+ * 批量删除生产成本明细
+ *
+ * @param detailIds 需要删除的生产成本明细主键集合
+ * @return 结果
+ */
+ public int deleteCostProdDetailByDetailIds(Long[] detailIds);
+
+ /**
+ * 删除生产成本明细信息
+ *
+ * @param detailId 生产成本明细主键
+ * @return 结果
+ */
+ public int deleteCostProdDetailByDetailId(Long detailId);
+}
diff --git a/ruoyi-cost/src/main/java/com/ruoyi/cost/service/ICostProdMetricService.java b/ruoyi-cost/src/main/java/com/ruoyi/cost/service/ICostProdMetricService.java
new file mode 100644
index 00000000..0c044666
--- /dev/null
+++ b/ruoyi-cost/src/main/java/com/ruoyi/cost/service/ICostProdMetricService.java
@@ -0,0 +1,61 @@
+package com.ruoyi.cost.service;
+
+import java.util.List;
+import com.ruoyi.cost.domain.CostProdMetric;
+
+/**
+ * 生产指标明细Service接口
+ *
+ * @author ruoyi
+ * @date 2026-06-09
+ */
+public interface ICostProdMetricService
+{
+ /**
+ * 查询生产指标明细
+ *
+ * @param metricId 生产指标明细主键
+ * @return 生产指标明细
+ */
+ public CostProdMetric selectCostProdMetricByMetricId(Long metricId);
+
+ /**
+ * 查询生产指标明细列表
+ *
+ * @param costProdMetric 生产指标明细
+ * @return 生产指标明细集合
+ */
+ public List selectCostProdMetricList(CostProdMetric costProdMetric);
+
+ /**
+ * 新增生产指标明细
+ *
+ * @param costProdMetric 生产指标明细
+ * @return 结果
+ */
+ public int insertCostProdMetric(CostProdMetric costProdMetric);
+
+ /**
+ * 修改生产指标明细
+ *
+ * @param costProdMetric 生产指标明细
+ * @return 结果
+ */
+ public int updateCostProdMetric(CostProdMetric costProdMetric);
+
+ /**
+ * 批量删除生产指标明细
+ *
+ * @param metricIds 需要删除的生产指标明细主键集合
+ * @return 结果
+ */
+ public int deleteCostProdMetricByMetricIds(Long[] metricIds);
+
+ /**
+ * 删除生产指标明细信息
+ *
+ * @param metricId 生产指标明细主键
+ * @return 结果
+ */
+ public int deleteCostProdMetricByMetricId(Long metricId);
+}
diff --git a/ruoyi-cost/src/main/java/com/ruoyi/cost/service/ICostProdReportService.java b/ruoyi-cost/src/main/java/com/ruoyi/cost/service/ICostProdReportService.java
new file mode 100644
index 00000000..292df7de
--- /dev/null
+++ b/ruoyi-cost/src/main/java/com/ruoyi/cost/service/ICostProdReportService.java
@@ -0,0 +1,61 @@
+package com.ruoyi.cost.service;
+
+import java.util.List;
+import com.ruoyi.cost.domain.CostProdReport;
+
+/**
+ * 生产月报Service接口
+ *
+ * @author ruoyi
+ * @date 2026-06-09
+ */
+public interface ICostProdReportService
+{
+ /**
+ * 查询生产月报
+ *
+ * @param reportId 生产月报主键
+ * @return 生产月报
+ */
+ public CostProdReport selectCostProdReportByReportId(Long reportId);
+
+ /**
+ * 查询生产月报列表
+ *
+ * @param costProdReport 生产月报
+ * @return 生产月报集合
+ */
+ public List selectCostProdReportList(CostProdReport costProdReport);
+
+ /**
+ * 新增生产月报
+ *
+ * @param costProdReport 生产月报
+ * @return 结果
+ */
+ public int insertCostProdReport(CostProdReport costProdReport);
+
+ /**
+ * 修改生产月报
+ *
+ * @param costProdReport 生产月报
+ * @return 结果
+ */
+ public int updateCostProdReport(CostProdReport costProdReport);
+
+ /**
+ * 批量删除生产月报
+ *
+ * @param reportIds 需要删除的生产月报主键集合
+ * @return 结果
+ */
+ public int deleteCostProdReportByReportIds(Long[] reportIds);
+
+ /**
+ * 删除生产月报信息
+ *
+ * @param reportId 生产月报主键
+ * @return 结果
+ */
+ public int deleteCostProdReportByReportId(Long reportId);
+}
diff --git a/ruoyi-cost/src/main/java/com/ruoyi/cost/service/impl/CostItemServiceImpl.java b/ruoyi-cost/src/main/java/com/ruoyi/cost/service/impl/CostItemServiceImpl.java
new file mode 100644
index 00000000..d466f72d
--- /dev/null
+++ b/ruoyi-cost/src/main/java/com/ruoyi/cost/service/impl/CostItemServiceImpl.java
@@ -0,0 +1,96 @@
+package com.ruoyi.cost.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.cost.mapper.CostItemMapper;
+import com.ruoyi.cost.domain.CostItem;
+import com.ruoyi.cost.service.ICostItemService;
+
+/**
+ * 成本项目配置Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2026-06-09
+ */
+@Service
+public class CostItemServiceImpl implements ICostItemService
+{
+ @Autowired
+ private CostItemMapper costItemMapper;
+
+ /**
+ * 查询成本项目配置
+ *
+ * @param itemId 成本项目配置主键
+ * @return 成本项目配置
+ */
+ @Override
+ public CostItem selectCostItemByItemId(Long itemId)
+ {
+ return costItemMapper.selectCostItemByItemId(itemId);
+ }
+
+ /**
+ * 查询成本项目配置列表
+ *
+ * @param costItem 成本项目配置
+ * @return 成本项目配置
+ */
+ @Override
+ public List selectCostItemList(CostItem costItem)
+ {
+ return costItemMapper.selectCostItemList(costItem);
+ }
+
+ /**
+ * 新增成本项目配置
+ *
+ * @param costItem 成本项目配置
+ * @return 结果
+ */
+ @Override
+ public int insertCostItem(CostItem costItem)
+ {
+ costItem.setCreateTime(DateUtils.getNowDate());
+ return costItemMapper.insertCostItem(costItem);
+ }
+
+ /**
+ * 修改成本项目配置
+ *
+ * @param costItem 成本项目配置
+ * @return 结果
+ */
+ @Override
+ public int updateCostItem(CostItem costItem)
+ {
+ costItem.setUpdateTime(DateUtils.getNowDate());
+ return costItemMapper.updateCostItem(costItem);
+ }
+
+ /**
+ * 批量删除成本项目配置
+ *
+ * @param itemIds 需要删除的成本项目配置主键
+ * @return 结果
+ */
+ @Override
+ public int deleteCostItemByItemIds(Long[] itemIds)
+ {
+ return costItemMapper.deleteCostItemByItemIds(itemIds);
+ }
+
+ /**
+ * 删除成本项目配置信息
+ *
+ * @param itemId 成本项目配置主键
+ * @return 结果
+ */
+ @Override
+ public int deleteCostItemByItemId(Long itemId)
+ {
+ return costItemMapper.deleteCostItemByItemId(itemId);
+ }
+}
diff --git a/ruoyi-cost/src/main/java/com/ruoyi/cost/service/impl/CostPriceServiceImpl.java b/ruoyi-cost/src/main/java/com/ruoyi/cost/service/impl/CostPriceServiceImpl.java
new file mode 100644
index 00000000..1d9e9f6e
--- /dev/null
+++ b/ruoyi-cost/src/main/java/com/ruoyi/cost/service/impl/CostPriceServiceImpl.java
@@ -0,0 +1,96 @@
+package com.ruoyi.cost.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.cost.mapper.CostPriceMapper;
+import com.ruoyi.cost.domain.CostPrice;
+import com.ruoyi.cost.service.ICostPriceService;
+
+/**
+ * 成本单价历史Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2026-06-09
+ */
+@Service
+public class CostPriceServiceImpl implements ICostPriceService
+{
+ @Autowired
+ private CostPriceMapper costPriceMapper;
+
+ /**
+ * 查询成本单价历史
+ *
+ * @param priceId 成本单价历史主键
+ * @return 成本单价历史
+ */
+ @Override
+ public CostPrice selectCostPriceByPriceId(Long priceId)
+ {
+ return costPriceMapper.selectCostPriceByPriceId(priceId);
+ }
+
+ /**
+ * 查询成本单价历史列表
+ *
+ * @param costPrice 成本单价历史
+ * @return 成本单价历史
+ */
+ @Override
+ public List selectCostPriceList(CostPrice costPrice)
+ {
+ return costPriceMapper.selectCostPriceList(costPrice);
+ }
+
+ /**
+ * 新增成本单价历史
+ *
+ * @param costPrice 成本单价历史
+ * @return 结果
+ */
+ @Override
+ public int insertCostPrice(CostPrice costPrice)
+ {
+ costPrice.setCreateTime(DateUtils.getNowDate());
+ return costPriceMapper.insertCostPrice(costPrice);
+ }
+
+ /**
+ * 修改成本单价历史
+ *
+ * @param costPrice 成本单价历史
+ * @return 结果
+ */
+ @Override
+ public int updateCostPrice(CostPrice costPrice)
+ {
+ costPrice.setUpdateTime(DateUtils.getNowDate());
+ return costPriceMapper.updateCostPrice(costPrice);
+ }
+
+ /**
+ * 批量删除成本单价历史
+ *
+ * @param priceIds 需要删除的成本单价历史主键
+ * @return 结果
+ */
+ @Override
+ public int deleteCostPriceByPriceIds(Long[] priceIds)
+ {
+ return costPriceMapper.deleteCostPriceByPriceIds(priceIds);
+ }
+
+ /**
+ * 删除成本单价历史信息
+ *
+ * @param priceId 成本单价历史主键
+ * @return 结果
+ */
+ @Override
+ public int deleteCostPriceByPriceId(Long priceId)
+ {
+ return costPriceMapper.deleteCostPriceByPriceId(priceId);
+ }
+}
diff --git a/ruoyi-cost/src/main/java/com/ruoyi/cost/service/impl/CostProdDetailServiceImpl.java b/ruoyi-cost/src/main/java/com/ruoyi/cost/service/impl/CostProdDetailServiceImpl.java
new file mode 100644
index 00000000..df754c38
--- /dev/null
+++ b/ruoyi-cost/src/main/java/com/ruoyi/cost/service/impl/CostProdDetailServiceImpl.java
@@ -0,0 +1,96 @@
+package com.ruoyi.cost.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.cost.mapper.CostProdDetailMapper;
+import com.ruoyi.cost.domain.CostProdDetail;
+import com.ruoyi.cost.service.ICostProdDetailService;
+
+/**
+ * 生产成本明细Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2026-06-09
+ */
+@Service
+public class CostProdDetailServiceImpl implements ICostProdDetailService
+{
+ @Autowired
+ private CostProdDetailMapper costProdDetailMapper;
+
+ /**
+ * 查询生产成本明细
+ *
+ * @param detailId 生产成本明细主键
+ * @return 生产成本明细
+ */
+ @Override
+ public CostProdDetail selectCostProdDetailByDetailId(Long detailId)
+ {
+ return costProdDetailMapper.selectCostProdDetailByDetailId(detailId);
+ }
+
+ /**
+ * 查询生产成本明细列表
+ *
+ * @param costProdDetail 生产成本明细
+ * @return 生产成本明细
+ */
+ @Override
+ public List selectCostProdDetailList(CostProdDetail costProdDetail)
+ {
+ return costProdDetailMapper.selectCostProdDetailList(costProdDetail);
+ }
+
+ /**
+ * 新增生产成本明细
+ *
+ * @param costProdDetail 生产成本明细
+ * @return 结果
+ */
+ @Override
+ public int insertCostProdDetail(CostProdDetail costProdDetail)
+ {
+ costProdDetail.setCreateTime(DateUtils.getNowDate());
+ return costProdDetailMapper.insertCostProdDetail(costProdDetail);
+ }
+
+ /**
+ * 修改生产成本明细
+ *
+ * @param costProdDetail 生产成本明细
+ * @return 结果
+ */
+ @Override
+ public int updateCostProdDetail(CostProdDetail costProdDetail)
+ {
+ costProdDetail.setUpdateTime(DateUtils.getNowDate());
+ return costProdDetailMapper.updateCostProdDetail(costProdDetail);
+ }
+
+ /**
+ * 批量删除生产成本明细
+ *
+ * @param detailIds 需要删除的生产成本明细主键
+ * @return 结果
+ */
+ @Override
+ public int deleteCostProdDetailByDetailIds(Long[] detailIds)
+ {
+ return costProdDetailMapper.deleteCostProdDetailByDetailIds(detailIds);
+ }
+
+ /**
+ * 删除生产成本明细信息
+ *
+ * @param detailId 生产成本明细主键
+ * @return 结果
+ */
+ @Override
+ public int deleteCostProdDetailByDetailId(Long detailId)
+ {
+ return costProdDetailMapper.deleteCostProdDetailByDetailId(detailId);
+ }
+}
diff --git a/ruoyi-cost/src/main/java/com/ruoyi/cost/service/impl/CostProdMetricServiceImpl.java b/ruoyi-cost/src/main/java/com/ruoyi/cost/service/impl/CostProdMetricServiceImpl.java
new file mode 100644
index 00000000..edddc406
--- /dev/null
+++ b/ruoyi-cost/src/main/java/com/ruoyi/cost/service/impl/CostProdMetricServiceImpl.java
@@ -0,0 +1,96 @@
+package com.ruoyi.cost.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.cost.mapper.CostProdMetricMapper;
+import com.ruoyi.cost.domain.CostProdMetric;
+import com.ruoyi.cost.service.ICostProdMetricService;
+
+/**
+ * 生产指标明细Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2026-06-09
+ */
+@Service
+public class CostProdMetricServiceImpl implements ICostProdMetricService
+{
+ @Autowired
+ private CostProdMetricMapper costProdMetricMapper;
+
+ /**
+ * 查询生产指标明细
+ *
+ * @param metricId 生产指标明细主键
+ * @return 生产指标明细
+ */
+ @Override
+ public CostProdMetric selectCostProdMetricByMetricId(Long metricId)
+ {
+ return costProdMetricMapper.selectCostProdMetricByMetricId(metricId);
+ }
+
+ /**
+ * 查询生产指标明细列表
+ *
+ * @param costProdMetric 生产指标明细
+ * @return 生产指标明细
+ */
+ @Override
+ public List selectCostProdMetricList(CostProdMetric costProdMetric)
+ {
+ return costProdMetricMapper.selectCostProdMetricList(costProdMetric);
+ }
+
+ /**
+ * 新增生产指标明细
+ *
+ * @param costProdMetric 生产指标明细
+ * @return 结果
+ */
+ @Override
+ public int insertCostProdMetric(CostProdMetric costProdMetric)
+ {
+ costProdMetric.setCreateTime(DateUtils.getNowDate());
+ return costProdMetricMapper.insertCostProdMetric(costProdMetric);
+ }
+
+ /**
+ * 修改生产指标明细
+ *
+ * @param costProdMetric 生产指标明细
+ * @return 结果
+ */
+ @Override
+ public int updateCostProdMetric(CostProdMetric costProdMetric)
+ {
+ costProdMetric.setUpdateTime(DateUtils.getNowDate());
+ return costProdMetricMapper.updateCostProdMetric(costProdMetric);
+ }
+
+ /**
+ * 批量删除生产指标明细
+ *
+ * @param metricIds 需要删除的生产指标明细主键
+ * @return 结果
+ */
+ @Override
+ public int deleteCostProdMetricByMetricIds(Long[] metricIds)
+ {
+ return costProdMetricMapper.deleteCostProdMetricByMetricIds(metricIds);
+ }
+
+ /**
+ * 删除生产指标明细信息
+ *
+ * @param metricId 生产指标明细主键
+ * @return 结果
+ */
+ @Override
+ public int deleteCostProdMetricByMetricId(Long metricId)
+ {
+ return costProdMetricMapper.deleteCostProdMetricByMetricId(metricId);
+ }
+}
diff --git a/ruoyi-cost/src/main/java/com/ruoyi/cost/service/impl/CostProdReportServiceImpl.java b/ruoyi-cost/src/main/java/com/ruoyi/cost/service/impl/CostProdReportServiceImpl.java
new file mode 100644
index 00000000..4bf77c3b
--- /dev/null
+++ b/ruoyi-cost/src/main/java/com/ruoyi/cost/service/impl/CostProdReportServiceImpl.java
@@ -0,0 +1,96 @@
+package com.ruoyi.cost.service.impl;
+
+import java.util.List;
+import com.ruoyi.common.utils.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.cost.mapper.CostProdReportMapper;
+import com.ruoyi.cost.domain.CostProdReport;
+import com.ruoyi.cost.service.ICostProdReportService;
+
+/**
+ * 生产月报Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2026-06-09
+ */
+@Service
+public class CostProdReportServiceImpl implements ICostProdReportService
+{
+ @Autowired
+ private CostProdReportMapper costProdReportMapper;
+
+ /**
+ * 查询生产月报
+ *
+ * @param reportId 生产月报主键
+ * @return 生产月报
+ */
+ @Override
+ public CostProdReport selectCostProdReportByReportId(Long reportId)
+ {
+ return costProdReportMapper.selectCostProdReportByReportId(reportId);
+ }
+
+ /**
+ * 查询生产月报列表
+ *
+ * @param costProdReport 生产月报
+ * @return 生产月报
+ */
+ @Override
+ public List selectCostProdReportList(CostProdReport costProdReport)
+ {
+ return costProdReportMapper.selectCostProdReportList(costProdReport);
+ }
+
+ /**
+ * 新增生产月报
+ *
+ * @param costProdReport 生产月报
+ * @return 结果
+ */
+ @Override
+ public int insertCostProdReport(CostProdReport costProdReport)
+ {
+ costProdReport.setCreateTime(DateUtils.getNowDate());
+ return costProdReportMapper.insertCostProdReport(costProdReport);
+ }
+
+ /**
+ * 修改生产月报
+ *
+ * @param costProdReport 生产月报
+ * @return 结果
+ */
+ @Override
+ public int updateCostProdReport(CostProdReport costProdReport)
+ {
+ costProdReport.setUpdateTime(DateUtils.getNowDate());
+ return costProdReportMapper.updateCostProdReport(costProdReport);
+ }
+
+ /**
+ * 批量删除生产月报
+ *
+ * @param reportIds 需要删除的生产月报主键
+ * @return 结果
+ */
+ @Override
+ public int deleteCostProdReportByReportIds(Long[] reportIds)
+ {
+ return costProdReportMapper.deleteCostProdReportByReportIds(reportIds);
+ }
+
+ /**
+ * 删除生产月报信息
+ *
+ * @param reportId 生产月报主键
+ * @return 结果
+ */
+ @Override
+ public int deleteCostProdReportByReportId(Long reportId)
+ {
+ return costProdReportMapper.deleteCostProdReportByReportId(reportId);
+ }
+}
diff --git a/ruoyi-cost/src/main/resources/mapper/cost/CostItemMapper.xml b/ruoyi-cost/src/main/resources/mapper/cost/CostItemMapper.xml
new file mode 100644
index 00000000..d706e210
--- /dev/null
+++ b/ruoyi-cost/src/main/resources/mapper/cost/CostItemMapper.xml
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select item_id, item_code, item_name, category, unit, remark, query_condition, del_flag, create_by, create_time, update_by, update_time from cost_item
+
+
+
+
+
+
+
+ insert into cost_item
+
+ item_code,
+ item_name,
+ category,
+ unit,
+ remark,
+ query_condition,
+ del_flag,
+ create_by,
+ create_time,
+ update_by,
+ update_time,
+
+
+ #{itemCode},
+ #{itemName},
+ #{category},
+ #{unit},
+ #{remark},
+ #{queryCondition},
+ #{delFlag},
+ #{createBy},
+ #{createTime},
+ #{updateBy},
+ #{updateTime},
+
+
+
+
+ update cost_item
+
+ item_code = #{itemCode},
+ item_name = #{itemName},
+ category = #{category},
+ unit = #{unit},
+ remark = #{remark},
+ query_condition = #{queryCondition},
+ del_flag = #{delFlag},
+ create_by = #{createBy},
+ create_time = #{createTime},
+ update_by = #{updateBy},
+ update_time = #{updateTime},
+
+ where item_id = #{itemId}
+
+
+
+ delete from cost_item where item_id = #{itemId}
+
+
+
+ delete from cost_item where item_id in
+
+ #{itemId}
+
+
+
\ No newline at end of file
diff --git a/ruoyi-cost/src/main/resources/mapper/cost/CostPriceMapper.xml b/ruoyi-cost/src/main/resources/mapper/cost/CostPriceMapper.xml
new file mode 100644
index 00000000..d4d62284
--- /dev/null
+++ b/ruoyi-cost/src/main/resources/mapper/cost/CostPriceMapper.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select price_id, item_id, price, effective_date, remark, del_flag, create_by, create_time, update_by, update_time from cost_price
+
+
+
+
+
+
+
+ insert into cost_price
+
+ item_id,
+ price,
+ effective_date,
+ remark,
+ del_flag,
+ create_by,
+ create_time,
+ update_by,
+ update_time,
+
+
+ #{itemId},
+ #{price},
+ #{effectiveDate},
+ #{remark},
+ #{delFlag},
+ #{createBy},
+ #{createTime},
+ #{updateBy},
+ #{updateTime},
+
+
+
+
+ update cost_price
+
+ item_id = #{itemId},
+ price = #{price},
+ effective_date = #{effectiveDate},
+ remark = #{remark},
+ del_flag = #{delFlag},
+ create_by = #{createBy},
+ create_time = #{createTime},
+ update_by = #{updateBy},
+ update_time = #{updateTime},
+
+ where price_id = #{priceId}
+
+
+
+ delete from cost_price where price_id = #{priceId}
+
+
+
+ delete from cost_price where price_id in
+
+ #{priceId}
+
+
+
\ No newline at end of file
diff --git a/ruoyi-cost/src/main/resources/mapper/cost/CostProdDetailMapper.xml b/ruoyi-cost/src/main/resources/mapper/cost/CostProdDetailMapper.xml
new file mode 100644
index 00000000..b6197113
--- /dev/null
+++ b/ruoyi-cost/src/main/resources/mapper/cost/CostProdDetailMapper.xml
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select detail_id, report_id, shift, detail_date, item_id, quantity, unit_price, amount, remark, del_flag, create_by, create_time, update_by, update_time from cost_prod_detail
+
+
+
+
+
+
+
+ insert into cost_prod_detail
+
+ report_id,
+ shift,
+ detail_date,
+ item_id,
+ quantity,
+ unit_price,
+ amount,
+ remark,
+ del_flag,
+ create_by,
+ create_time,
+ update_by,
+ update_time,
+
+
+ #{reportId},
+ #{shift},
+ #{detailDate},
+ #{itemId},
+ #{quantity},
+ #{unitPrice},
+ #{amount},
+ #{remark},
+ #{delFlag},
+ #{createBy},
+ #{createTime},
+ #{updateBy},
+ #{updateTime},
+
+
+
+
+ update cost_prod_detail
+
+ report_id = #{reportId},
+ shift = #{shift},
+ detail_date = #{detailDate},
+ item_id = #{itemId},
+ quantity = #{quantity},
+ unit_price = #{unitPrice},
+ amount = #{amount},
+ remark = #{remark},
+ del_flag = #{delFlag},
+ create_by = #{createBy},
+ create_time = #{createTime},
+ update_by = #{updateBy},
+ update_time = #{updateTime},
+
+ where detail_id = #{detailId}
+
+
+
+ delete from cost_prod_detail where detail_id = #{detailId}
+
+
+
+ delete from cost_prod_detail where detail_id in
+
+ #{detailId}
+
+
+
\ No newline at end of file
diff --git a/ruoyi-cost/src/main/resources/mapper/cost/CostProdMetricMapper.xml b/ruoyi-cost/src/main/resources/mapper/cost/CostProdMetricMapper.xml
new file mode 100644
index 00000000..4f8168a0
--- /dev/null
+++ b/ruoyi-cost/src/main/resources/mapper/cost/CostProdMetricMapper.xml
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select metric_id, report_id, metric_code, metric_name, metric_formula, metric_value, remark, del_flag, create_by, create_time, update_by, update_time from cost_prod_metric
+
+
+
+
+
+
+
+ insert into cost_prod_metric
+
+ report_id,
+ metric_code,
+ metric_name,
+ metric_formula,
+ metric_value,
+ remark,
+ del_flag,
+ create_by,
+ create_time,
+ update_by,
+ update_time,
+
+
+ #{reportId},
+ #{metricCode},
+ #{metricName},
+ #{metricFormula},
+ #{metricValue},
+ #{remark},
+ #{delFlag},
+ #{createBy},
+ #{createTime},
+ #{updateBy},
+ #{updateTime},
+
+
+
+
+ update cost_prod_metric
+
+ report_id = #{reportId},
+ metric_code = #{metricCode},
+ metric_name = #{metricName},
+ metric_formula = #{metricFormula},
+ metric_value = #{metricValue},
+ remark = #{remark},
+ del_flag = #{delFlag},
+ create_by = #{createBy},
+ create_time = #{createTime},
+ update_by = #{updateBy},
+ update_time = #{updateTime},
+
+ where metric_id = #{metricId}
+
+
+
+ delete from cost_prod_metric where metric_id = #{metricId}
+
+
+
+ delete from cost_prod_metric where metric_id in
+
+ #{metricId}
+
+
+
\ No newline at end of file
diff --git a/ruoyi-cost/src/main/resources/mapper/cost/CostProdReportMapper.xml b/ruoyi-cost/src/main/resources/mapper/cost/CostProdReportMapper.xml
new file mode 100644
index 00000000..fbeeff85
--- /dev/null
+++ b/ruoyi-cost/src/main/resources/mapper/cost/CostProdReportMapper.xml
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select report_id, report_title, report_date, line_type, input_weight, output_weight, remark, del_flag, create_by, create_time, update_by, update_time, col_config from cost_prod_report
+
+
+
+
+
+
+
+ insert into cost_prod_report
+
+ report_title,
+ report_date,
+ line_type,
+ input_weight,
+ output_weight,
+ remark,
+ del_flag,
+ create_by,
+ create_time,
+ update_by,
+ update_time,
+ col_config,
+
+
+ #{reportTitle},
+ #{reportDate},
+ #{lineType},
+ #{inputWeight},
+ #{outputWeight},
+ #{remark},
+ #{delFlag},
+ #{createBy},
+ #{createTime},
+ #{updateBy},
+ #{updateTime},
+ #{colConfig},
+
+
+
+
+ update cost_prod_report
+
+ report_title = #{reportTitle},
+ report_date = #{reportDate},
+ line_type = #{lineType},
+ input_weight = #{inputWeight},
+ output_weight = #{outputWeight},
+ remark = #{remark},
+ del_flag = #{delFlag},
+ create_by = #{createBy},
+ create_time = #{createTime},
+ update_by = #{updateBy},
+ update_time = #{updateTime},
+ col_config = #{colConfig},
+
+ where report_id = #{reportId}
+
+
+
+ delete from cost_prod_report where report_id = #{reportId}
+
+
+
+ delete from cost_prod_report where report_id in
+
+ #{reportId}
+
+
+
\ No newline at end of file