From e04a4a0b9914bbdd0aad3d161356884ae8b911d1 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Mon, 25 May 2026 14:14:45 +0800 Subject: [PATCH] =?UTF-8?q?feat(cost):=20=E6=96=B0=E5=A2=9E=E7=94=9F?= =?UTF-8?q?=E4=BA=A7=E6=88=90=E6=9C=AC=E7=AE=A1=E7=90=86=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增成本项目配置(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 --- klp-admin/pom.xml | 5 + klp-cost/pom.xml | 20 +++ .../cost/controller/CostItemController.java | 99 +++++++++++++++ .../cost/controller/CostPriceController.java | 100 +++++++++++++++ .../controller/CostProdDetailController.java | 99 +++++++++++++++ .../controller/CostProdMetricController.java | 99 +++++++++++++++ .../controller/CostProdReportController.java | 99 +++++++++++++++ .../java/com/klp/cost/domain/CostItem.java | 53 ++++++++ .../java/com/klp/cost/domain/CostPrice.java | 55 +++++++++ .../com/klp/cost/domain/CostProdDetail.java | 71 +++++++++++ .../com/klp/cost/domain/CostProdMetric.java | 58 +++++++++ .../com/klp/cost/domain/CostProdReport.java | 63 ++++++++++ .../com/klp/cost/domain/bo/CostItemBo.java | 51 ++++++++ .../com/klp/cost/domain/bo/CostPriceBo.java | 52 ++++++++ .../klp/cost/domain/bo/CostProdDetailBo.java | 72 +++++++++++ .../klp/cost/domain/bo/CostProdMetricBo.java | 57 +++++++++ .../klp/cost/domain/bo/CostProdReportBo.java | 62 ++++++++++ .../com/klp/cost/domain/vo/CostItemVo.java | 59 +++++++++ .../com/klp/cost/domain/vo/CostPriceVo.java | 56 +++++++++ .../klp/cost/domain/vo/CostProdDetailVo.java | 80 ++++++++++++ .../klp/cost/domain/vo/CostProdMetricVo.java | 67 ++++++++++ .../klp/cost/domain/vo/CostProdReportVo.java | 68 +++++++++++ .../com/klp/cost/mapper/CostItemMapper.java | 15 +++ .../com/klp/cost/mapper/CostPriceMapper.java | 15 +++ .../klp/cost/mapper/CostProdDetailMapper.java | 15 +++ .../klp/cost/mapper/CostProdMetricMapper.java | 15 +++ .../klp/cost/mapper/CostProdReportMapper.java | 15 +++ .../klp/cost/service/ICostItemService.java | 49 ++++++++ .../klp/cost/service/ICostPriceService.java | 49 ++++++++ .../cost/service/ICostProdDetailService.java | 49 ++++++++ .../cost/service/ICostProdMetricService.java | 49 ++++++++ .../cost/service/ICostProdReportService.java | 49 ++++++++ .../service/impl/CostItemServiceImpl.java | 112 +++++++++++++++++ .../service/impl/CostPriceServiceImpl.java | 110 +++++++++++++++++ .../impl/CostProdDetailServiceImpl.java | 115 ++++++++++++++++++ .../impl/CostProdMetricServiceImpl.java | 113 +++++++++++++++++ .../impl/CostProdReportServiceImpl.java | 113 +++++++++++++++++ .../resources/mapper/cost/CostItemMapper.xml | 22 ++++ .../resources/mapper/cost/CostPriceMapper.xml | 21 ++++ .../mapper/cost/CostProdDetailMapper.xml | 25 ++++ .../mapper/cost/CostProdMetricMapper.xml | 23 ++++ .../mapper/cost/CostProdReportMapper.xml | 23 ++++ pom.xml | 6 + 43 files changed, 2448 insertions(+) create mode 100644 klp-cost/pom.xml create mode 100644 klp-cost/src/main/java/com/klp/cost/controller/CostItemController.java create mode 100644 klp-cost/src/main/java/com/klp/cost/controller/CostPriceController.java create mode 100644 klp-cost/src/main/java/com/klp/cost/controller/CostProdDetailController.java create mode 100644 klp-cost/src/main/java/com/klp/cost/controller/CostProdMetricController.java create mode 100644 klp-cost/src/main/java/com/klp/cost/controller/CostProdReportController.java create mode 100644 klp-cost/src/main/java/com/klp/cost/domain/CostItem.java create mode 100644 klp-cost/src/main/java/com/klp/cost/domain/CostPrice.java create mode 100644 klp-cost/src/main/java/com/klp/cost/domain/CostProdDetail.java create mode 100644 klp-cost/src/main/java/com/klp/cost/domain/CostProdMetric.java create mode 100644 klp-cost/src/main/java/com/klp/cost/domain/CostProdReport.java create mode 100644 klp-cost/src/main/java/com/klp/cost/domain/bo/CostItemBo.java create mode 100644 klp-cost/src/main/java/com/klp/cost/domain/bo/CostPriceBo.java create mode 100644 klp-cost/src/main/java/com/klp/cost/domain/bo/CostProdDetailBo.java create mode 100644 klp-cost/src/main/java/com/klp/cost/domain/bo/CostProdMetricBo.java create mode 100644 klp-cost/src/main/java/com/klp/cost/domain/bo/CostProdReportBo.java create mode 100644 klp-cost/src/main/java/com/klp/cost/domain/vo/CostItemVo.java create mode 100644 klp-cost/src/main/java/com/klp/cost/domain/vo/CostPriceVo.java create mode 100644 klp-cost/src/main/java/com/klp/cost/domain/vo/CostProdDetailVo.java create mode 100644 klp-cost/src/main/java/com/klp/cost/domain/vo/CostProdMetricVo.java create mode 100644 klp-cost/src/main/java/com/klp/cost/domain/vo/CostProdReportVo.java create mode 100644 klp-cost/src/main/java/com/klp/cost/mapper/CostItemMapper.java create mode 100644 klp-cost/src/main/java/com/klp/cost/mapper/CostPriceMapper.java create mode 100644 klp-cost/src/main/java/com/klp/cost/mapper/CostProdDetailMapper.java create mode 100644 klp-cost/src/main/java/com/klp/cost/mapper/CostProdMetricMapper.java create mode 100644 klp-cost/src/main/java/com/klp/cost/mapper/CostProdReportMapper.java create mode 100644 klp-cost/src/main/java/com/klp/cost/service/ICostItemService.java create mode 100644 klp-cost/src/main/java/com/klp/cost/service/ICostPriceService.java create mode 100644 klp-cost/src/main/java/com/klp/cost/service/ICostProdDetailService.java create mode 100644 klp-cost/src/main/java/com/klp/cost/service/ICostProdMetricService.java create mode 100644 klp-cost/src/main/java/com/klp/cost/service/ICostProdReportService.java create mode 100644 klp-cost/src/main/java/com/klp/cost/service/impl/CostItemServiceImpl.java create mode 100644 klp-cost/src/main/java/com/klp/cost/service/impl/CostPriceServiceImpl.java create mode 100644 klp-cost/src/main/java/com/klp/cost/service/impl/CostProdDetailServiceImpl.java create mode 100644 klp-cost/src/main/java/com/klp/cost/service/impl/CostProdMetricServiceImpl.java create mode 100644 klp-cost/src/main/java/com/klp/cost/service/impl/CostProdReportServiceImpl.java create mode 100644 klp-cost/src/main/resources/mapper/cost/CostItemMapper.xml create mode 100644 klp-cost/src/main/resources/mapper/cost/CostPriceMapper.xml create mode 100644 klp-cost/src/main/resources/mapper/cost/CostProdDetailMapper.xml create mode 100644 klp-cost/src/main/resources/mapper/cost/CostProdMetricMapper.xml create mode 100644 klp-cost/src/main/resources/mapper/cost/CostProdReportMapper.xml diff --git a/klp-admin/pom.xml b/klp-admin/pom.xml index 9f6b8ece..3f4e083f 100644 --- a/klp-admin/pom.xml +++ b/klp-admin/pom.xml @@ -124,6 +124,11 @@ klp-aps + + com.klp + klp-cost + + org.springframework.boot diff --git a/klp-cost/pom.xml b/klp-cost/pom.xml new file mode 100644 index 00000000..4afb530a --- /dev/null +++ b/klp-cost/pom.xml @@ -0,0 +1,20 @@ + + 4.0.0 + + com.klp + klp-oa + 0.8.3 + + klp-cost + Archetype - klp-cost + http://maven.apache.org + + + + + com.klp + klp-common + + + diff --git a/klp-cost/src/main/java/com/klp/cost/controller/CostItemController.java b/klp-cost/src/main/java/com/klp/cost/controller/CostItemController.java new file mode 100644 index 00000000..5b7a97ed --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/controller/CostItemController.java @@ -0,0 +1,99 @@ +package com.klp.cost.controller; + +import java.util.List; +import java.util.Arrays; + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.klp.common.annotation.RepeatSubmit; +import com.klp.common.annotation.Log; +import com.klp.common.core.controller.BaseController; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.domain.R; +import com.klp.common.core.validate.AddGroup; +import com.klp.common.core.validate.EditGroup; +import com.klp.common.enums.BusinessType; +import com.klp.common.utils.poi.ExcelUtil; +import com.klp.cost.domain.vo.CostItemVo; +import com.klp.cost.domain.bo.CostItemBo; +import com.klp.cost.service.ICostItemService; +import com.klp.common.core.page.TableDataInfo; + +/** + * 成本项目配置 + * + * @author klp + * @date 2026-05-25 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/cost/item") +public class CostItemController extends BaseController { + + private final ICostItemService iCostItemService; + + /** + * 查询成本项目配置列表 + */ + @GetMapping("/list") + public TableDataInfo list(CostItemBo bo, PageQuery pageQuery) { + return iCostItemService.queryPageList(bo, pageQuery); + } + + /** + * 导出成本项目配置列表 + */ + @Log(title = "成本项目配置", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(CostItemBo bo, HttpServletResponse response) { + List list = iCostItemService.queryList(bo); + ExcelUtil.exportExcel(list, "成本项目配置", CostItemVo.class, response); + } + + /** + * 获取成本项目配置详细信息 + * + * @param itemId 主键 + */ + @GetMapping("/{itemId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long itemId) { + return R.ok(iCostItemService.queryById(itemId)); + } + + /** + * 新增成本项目配置 + */ + @Log(title = "成本项目配置", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody CostItemBo bo) { + return toAjax(iCostItemService.insertByBo(bo)); + } + + /** + * 修改成本项目配置 + */ + @Log(title = "成本项目配置", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody CostItemBo bo) { + return toAjax(iCostItemService.updateByBo(bo)); + } + + /** + * 删除成本项目配置 + * + * @param itemIds 主键串 + */ + @Log(title = "成本项目配置", businessType = BusinessType.DELETE) + @DeleteMapping("/{itemIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] itemIds) { + return toAjax(iCostItemService.deleteWithValidByIds(Arrays.asList(itemIds), true)); + } +} diff --git a/klp-cost/src/main/java/com/klp/cost/controller/CostPriceController.java b/klp-cost/src/main/java/com/klp/cost/controller/CostPriceController.java new file mode 100644 index 00000000..6701bf35 --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/controller/CostPriceController.java @@ -0,0 +1,100 @@ +package com.klp.cost.controller; + +import java.util.List; +import java.util.Arrays; + + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.klp.common.annotation.RepeatSubmit; +import com.klp.common.annotation.Log; +import com.klp.common.core.controller.BaseController; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.domain.R; +import com.klp.common.core.validate.AddGroup; +import com.klp.common.core.validate.EditGroup; +import com.klp.common.enums.BusinessType; +import com.klp.common.utils.poi.ExcelUtil; +import com.klp.cost.domain.vo.CostPriceVo; +import com.klp.cost.domain.bo.CostPriceBo; +import com.klp.cost.service.ICostPriceService; +import com.klp.common.core.page.TableDataInfo; + +/** + * 成本单价历史 + * + * @author klp + * @date 2026-05-25 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/cost/price") +public class CostPriceController extends BaseController { + + private final ICostPriceService iCostPriceService; + + /** + * 查询成本单价历史列表 + */ + @GetMapping("/list") + public TableDataInfo list(CostPriceBo bo, PageQuery pageQuery) { + return iCostPriceService.queryPageList(bo, pageQuery); + } + + /** + * 导出成本单价历史列表 + */ + @Log(title = "成本单价历史", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(CostPriceBo bo, HttpServletResponse response) { + List list = iCostPriceService.queryList(bo); + ExcelUtil.exportExcel(list, "成本单价历史", CostPriceVo.class, response); + } + + /** + * 获取成本单价历史详细信息 + * + * @param priceId 主键 + */ + @GetMapping("/{priceId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long priceId) { + return R.ok(iCostPriceService.queryById(priceId)); + } + + /** + * 新增成本单价历史 + */ + @Log(title = "成本单价历史", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody CostPriceBo bo) { + return toAjax(iCostPriceService.insertByBo(bo)); + } + + /** + * 修改成本单价历史 + */ + @Log(title = "成本单价历史", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody CostPriceBo bo) { + return toAjax(iCostPriceService.updateByBo(bo)); + } + + /** + * 删除成本单价历史 + * + * @param priceIds 主键串 + */ + @Log(title = "成本单价历史", businessType = BusinessType.DELETE) + @DeleteMapping("/{priceIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] priceIds) { + return toAjax(iCostPriceService.deleteWithValidByIds(Arrays.asList(priceIds), true)); + } +} diff --git a/klp-cost/src/main/java/com/klp/cost/controller/CostProdDetailController.java b/klp-cost/src/main/java/com/klp/cost/controller/CostProdDetailController.java new file mode 100644 index 00000000..66088e8e --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/controller/CostProdDetailController.java @@ -0,0 +1,99 @@ +package com.klp.cost.controller; + +import java.util.List; +import java.util.Arrays; + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.klp.common.annotation.RepeatSubmit; +import com.klp.common.annotation.Log; +import com.klp.common.core.controller.BaseController; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.domain.R; +import com.klp.common.core.validate.AddGroup; +import com.klp.common.core.validate.EditGroup; +import com.klp.common.enums.BusinessType; +import com.klp.common.utils.poi.ExcelUtil; +import com.klp.cost.domain.vo.CostProdDetailVo; +import com.klp.cost.domain.bo.CostProdDetailBo; +import com.klp.cost.service.ICostProdDetailService; +import com.klp.common.core.page.TableDataInfo; + +/** + * 生产成本明细 + * + * @author klp + * @date 2026-05-25 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/cost/prodDetail") +public class CostProdDetailController extends BaseController { + + private final ICostProdDetailService iCostProdDetailService; + + /** + * 查询生产成本明细列表 + */ + @GetMapping("/list") + public TableDataInfo list(CostProdDetailBo bo, PageQuery pageQuery) { + return iCostProdDetailService.queryPageList(bo, pageQuery); + } + + /** + * 导出生产成本明细列表 + */ + @Log(title = "生产成本明细", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(CostProdDetailBo bo, HttpServletResponse response) { + List list = iCostProdDetailService.queryList(bo); + ExcelUtil.exportExcel(list, "生产成本明细", CostProdDetailVo.class, response); + } + + /** + * 获取生产成本明细详细信息 + * + * @param detailId 主键 + */ + @GetMapping("/{detailId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long detailId) { + return R.ok(iCostProdDetailService.queryById(detailId)); + } + + /** + * 新增生产成本明细 + */ + @Log(title = "生产成本明细", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody CostProdDetailBo bo) { + return toAjax(iCostProdDetailService.insertByBo(bo)); + } + + /** + * 修改生产成本明细 + */ + @Log(title = "生产成本明细", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody CostProdDetailBo bo) { + return toAjax(iCostProdDetailService.updateByBo(bo)); + } + + /** + * 删除生产成本明细 + * + * @param detailIds 主键串 + */ + @Log(title = "生产成本明细", businessType = BusinessType.DELETE) + @DeleteMapping("/{detailIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] detailIds) { + return toAjax(iCostProdDetailService.deleteWithValidByIds(Arrays.asList(detailIds), true)); + } +} diff --git a/klp-cost/src/main/java/com/klp/cost/controller/CostProdMetricController.java b/klp-cost/src/main/java/com/klp/cost/controller/CostProdMetricController.java new file mode 100644 index 00000000..c6b09023 --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/controller/CostProdMetricController.java @@ -0,0 +1,99 @@ +package com.klp.cost.controller; + +import java.util.List; +import java.util.Arrays; + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.klp.common.annotation.RepeatSubmit; +import com.klp.common.annotation.Log; +import com.klp.common.core.controller.BaseController; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.domain.R; +import com.klp.common.core.validate.AddGroup; +import com.klp.common.core.validate.EditGroup; +import com.klp.common.enums.BusinessType; +import com.klp.common.utils.poi.ExcelUtil; +import com.klp.cost.domain.vo.CostProdMetricVo; +import com.klp.cost.domain.bo.CostProdMetricBo; +import com.klp.cost.service.ICostProdMetricService; +import com.klp.common.core.page.TableDataInfo; + +/** + * 生产指标明细 + * + * @author klp + * @date 2026-05-25 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/cost/prodMetric") +public class CostProdMetricController extends BaseController { + + private final ICostProdMetricService iCostProdMetricService; + + /** + * 查询生产指标明细列表 + */ + @GetMapping("/list") + public TableDataInfo list(CostProdMetricBo bo, PageQuery pageQuery) { + return iCostProdMetricService.queryPageList(bo, pageQuery); + } + + /** + * 导出生产指标明细列表 + */ + @Log(title = "生产指标明细", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(CostProdMetricBo bo, HttpServletResponse response) { + List list = iCostProdMetricService.queryList(bo); + ExcelUtil.exportExcel(list, "生产指标明细", CostProdMetricVo.class, response); + } + + /** + * 获取生产指标明细详细信息 + * + * @param metricId 主键 + */ + @GetMapping("/{metricId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long metricId) { + return R.ok(iCostProdMetricService.queryById(metricId)); + } + + /** + * 新增生产指标明细 + */ + @Log(title = "生产指标明细", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody CostProdMetricBo bo) { + return toAjax(iCostProdMetricService.insertByBo(bo)); + } + + /** + * 修改生产指标明细 + */ + @Log(title = "生产指标明细", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody CostProdMetricBo bo) { + return toAjax(iCostProdMetricService.updateByBo(bo)); + } + + /** + * 删除生产指标明细 + * + * @param metricIds 主键串 + */ + @Log(title = "生产指标明细", businessType = BusinessType.DELETE) + @DeleteMapping("/{metricIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] metricIds) { + return toAjax(iCostProdMetricService.deleteWithValidByIds(Arrays.asList(metricIds), true)); + } +} diff --git a/klp-cost/src/main/java/com/klp/cost/controller/CostProdReportController.java b/klp-cost/src/main/java/com/klp/cost/controller/CostProdReportController.java new file mode 100644 index 00000000..c767d543 --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/controller/CostProdReportController.java @@ -0,0 +1,99 @@ +package com.klp.cost.controller; + +import java.util.List; +import java.util.Arrays; + +import lombok.RequiredArgsConstructor; +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.*; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.klp.common.annotation.RepeatSubmit; +import com.klp.common.annotation.Log; +import com.klp.common.core.controller.BaseController; +import com.klp.common.core.domain.PageQuery; +import com.klp.common.core.domain.R; +import com.klp.common.core.validate.AddGroup; +import com.klp.common.core.validate.EditGroup; +import com.klp.common.enums.BusinessType; +import com.klp.common.utils.poi.ExcelUtil; +import com.klp.cost.domain.vo.CostProdReportVo; +import com.klp.cost.domain.bo.CostProdReportBo; +import com.klp.cost.service.ICostProdReportService; +import com.klp.common.core.page.TableDataInfo; + +/** + * 生产月报 + * + * @author klp + * @date 2026-05-25 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/cost/prodReport") +public class CostProdReportController extends BaseController { + + private final ICostProdReportService iCostProdReportService; + + /** + * 查询生产月报列表 + */ + @GetMapping("/list") + public TableDataInfo list(CostProdReportBo bo, PageQuery pageQuery) { + return iCostProdReportService.queryPageList(bo, pageQuery); + } + + /** + * 导出生产月报列表 + */ + @Log(title = "生产月报", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(CostProdReportBo bo, HttpServletResponse response) { + List list = iCostProdReportService.queryList(bo); + ExcelUtil.exportExcel(list, "生产月报", CostProdReportVo.class, response); + } + + /** + * 获取生产月报详细信息 + * + * @param reportId 主键 + */ + @GetMapping("/{reportId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long reportId) { + return R.ok(iCostProdReportService.queryById(reportId)); + } + + /** + * 新增生产月报 + */ + @Log(title = "生产月报", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody CostProdReportBo bo) { + return toAjax(iCostProdReportService.insertByBo(bo)); + } + + /** + * 修改生产月报 + */ + @Log(title = "生产月报", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody CostProdReportBo bo) { + return toAjax(iCostProdReportService.updateByBo(bo)); + } + + /** + * 删除生产月报 + * + * @param reportIds 主键串 + */ + @Log(title = "生产月报", businessType = BusinessType.DELETE) + @DeleteMapping("/{reportIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] reportIds) { + return toAjax(iCostProdReportService.deleteWithValidByIds(Arrays.asList(reportIds), true)); + } +} diff --git a/klp-cost/src/main/java/com/klp/cost/domain/CostItem.java b/klp-cost/src/main/java/com/klp/cost/domain/CostItem.java new file mode 100644 index 00000000..c8f8bb3e --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/domain/CostItem.java @@ -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; + +} diff --git a/klp-cost/src/main/java/com/klp/cost/domain/CostPrice.java b/klp-cost/src/main/java/com/klp/cost/domain/CostPrice.java new file mode 100644 index 00000000..d0358e9c --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/domain/CostPrice.java @@ -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; + +} diff --git a/klp-cost/src/main/java/com/klp/cost/domain/CostProdDetail.java b/klp-cost/src/main/java/com/klp/cost/domain/CostProdDetail.java new file mode 100644 index 00000000..9fe0a8b8 --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/domain/CostProdDetail.java @@ -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; + +} diff --git a/klp-cost/src/main/java/com/klp/cost/domain/CostProdMetric.java b/klp-cost/src/main/java/com/klp/cost/domain/CostProdMetric.java new file mode 100644 index 00000000..b653c7ce --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/domain/CostProdMetric.java @@ -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; + +} diff --git a/klp-cost/src/main/java/com/klp/cost/domain/CostProdReport.java b/klp-cost/src/main/java/com/klp/cost/domain/CostProdReport.java new file mode 100644 index 00000000..3cc0112d --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/domain/CostProdReport.java @@ -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; + +} diff --git a/klp-cost/src/main/java/com/klp/cost/domain/bo/CostItemBo.java b/klp-cost/src/main/java/com/klp/cost/domain/bo/CostItemBo.java new file mode 100644 index 00000000..f1cc05dc --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/domain/bo/CostItemBo.java @@ -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; + + +} diff --git a/klp-cost/src/main/java/com/klp/cost/domain/bo/CostPriceBo.java b/klp-cost/src/main/java/com/klp/cost/domain/bo/CostPriceBo.java new file mode 100644 index 00000000..983dc042 --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/domain/bo/CostPriceBo.java @@ -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; + + +} diff --git a/klp-cost/src/main/java/com/klp/cost/domain/bo/CostProdDetailBo.java b/klp-cost/src/main/java/com/klp/cost/domain/bo/CostProdDetailBo.java new file mode 100644 index 00000000..10a7ac56 --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/domain/bo/CostProdDetailBo.java @@ -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; + + +} diff --git a/klp-cost/src/main/java/com/klp/cost/domain/bo/CostProdMetricBo.java b/klp-cost/src/main/java/com/klp/cost/domain/bo/CostProdMetricBo.java new file mode 100644 index 00000000..f9e17014 --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/domain/bo/CostProdMetricBo.java @@ -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; + + +} diff --git a/klp-cost/src/main/java/com/klp/cost/domain/bo/CostProdReportBo.java b/klp-cost/src/main/java/com/klp/cost/domain/bo/CostProdReportBo.java new file mode 100644 index 00000000..140b73b9 --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/domain/bo/CostProdReportBo.java @@ -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; + + +} diff --git a/klp-cost/src/main/java/com/klp/cost/domain/vo/CostItemVo.java b/klp-cost/src/main/java/com/klp/cost/domain/vo/CostItemVo.java new file mode 100644 index 00000000..c2f29d4c --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/domain/vo/CostItemVo.java @@ -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; + + +} diff --git a/klp-cost/src/main/java/com/klp/cost/domain/vo/CostPriceVo.java b/klp-cost/src/main/java/com/klp/cost/domain/vo/CostPriceVo.java new file mode 100644 index 00000000..a6740e4f --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/domain/vo/CostPriceVo.java @@ -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; + + +} diff --git a/klp-cost/src/main/java/com/klp/cost/domain/vo/CostProdDetailVo.java b/klp-cost/src/main/java/com/klp/cost/domain/vo/CostProdDetailVo.java new file mode 100644 index 00000000..d6f6aee1 --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/domain/vo/CostProdDetailVo.java @@ -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; + + +} diff --git a/klp-cost/src/main/java/com/klp/cost/domain/vo/CostProdMetricVo.java b/klp-cost/src/main/java/com/klp/cost/domain/vo/CostProdMetricVo.java new file mode 100644 index 00000000..7420654f --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/domain/vo/CostProdMetricVo.java @@ -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; + + +} diff --git a/klp-cost/src/main/java/com/klp/cost/domain/vo/CostProdReportVo.java b/klp-cost/src/main/java/com/klp/cost/domain/vo/CostProdReportVo.java new file mode 100644 index 00000000..748f728a --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/domain/vo/CostProdReportVo.java @@ -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; + + +} diff --git a/klp-cost/src/main/java/com/klp/cost/mapper/CostItemMapper.java b/klp-cost/src/main/java/com/klp/cost/mapper/CostItemMapper.java new file mode 100644 index 00000000..882160b7 --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/mapper/CostItemMapper.java @@ -0,0 +1,15 @@ +package com.klp.cost.mapper; + +import com.klp.cost.domain.CostItem; +import com.klp.cost.domain.vo.CostItemVo; +import com.klp.common.core.mapper.BaseMapperPlus; + +/** + * 成本项目配置Mapper接口 + * + * @author klp + * @date 2026-05-25 + */ +public interface CostItemMapper extends BaseMapperPlus { + +} diff --git a/klp-cost/src/main/java/com/klp/cost/mapper/CostPriceMapper.java b/klp-cost/src/main/java/com/klp/cost/mapper/CostPriceMapper.java new file mode 100644 index 00000000..04a91092 --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/mapper/CostPriceMapper.java @@ -0,0 +1,15 @@ +package com.klp.cost.mapper; + +import com.klp.cost.domain.CostPrice; +import com.klp.cost.domain.vo.CostPriceVo; +import com.klp.common.core.mapper.BaseMapperPlus; + +/** + * 成本单价历史Mapper接口 + * + * @author klp + * @date 2026-05-25 + */ +public interface CostPriceMapper extends BaseMapperPlus { + +} diff --git a/klp-cost/src/main/java/com/klp/cost/mapper/CostProdDetailMapper.java b/klp-cost/src/main/java/com/klp/cost/mapper/CostProdDetailMapper.java new file mode 100644 index 00000000..e81d6ada --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/mapper/CostProdDetailMapper.java @@ -0,0 +1,15 @@ +package com.klp.cost.mapper; + +import com.klp.cost.domain.CostProdDetail; +import com.klp.cost.domain.vo.CostProdDetailVo; +import com.klp.common.core.mapper.BaseMapperPlus; + +/** + * 生产成本明细Mapper接口 + * + * @author klp + * @date 2026-05-25 + */ +public interface CostProdDetailMapper extends BaseMapperPlus { + +} diff --git a/klp-cost/src/main/java/com/klp/cost/mapper/CostProdMetricMapper.java b/klp-cost/src/main/java/com/klp/cost/mapper/CostProdMetricMapper.java new file mode 100644 index 00000000..155a4546 --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/mapper/CostProdMetricMapper.java @@ -0,0 +1,15 @@ +package com.klp.cost.mapper; + +import com.klp.cost.domain.CostProdMetric; +import com.klp.cost.domain.vo.CostProdMetricVo; +import com.klp.common.core.mapper.BaseMapperPlus; + +/** + * 生产指标明细Mapper接口 + * + * @author klp + * @date 2026-05-25 + */ +public interface CostProdMetricMapper extends BaseMapperPlus { + +} diff --git a/klp-cost/src/main/java/com/klp/cost/mapper/CostProdReportMapper.java b/klp-cost/src/main/java/com/klp/cost/mapper/CostProdReportMapper.java new file mode 100644 index 00000000..243089e3 --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/mapper/CostProdReportMapper.java @@ -0,0 +1,15 @@ +package com.klp.cost.mapper; + +import com.klp.cost.domain.CostProdReport; +import com.klp.cost.domain.vo.CostProdReportVo; +import com.klp.common.core.mapper.BaseMapperPlus; + +/** + * 生产月报Mapper接口 + * + * @author klp + * @date 2026-05-25 + */ +public interface CostProdReportMapper extends BaseMapperPlus { + +} diff --git a/klp-cost/src/main/java/com/klp/cost/service/ICostItemService.java b/klp-cost/src/main/java/com/klp/cost/service/ICostItemService.java new file mode 100644 index 00000000..18ce01f6 --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/service/ICostItemService.java @@ -0,0 +1,49 @@ +package com.klp.cost.service; + +import com.klp.cost.domain.CostItem; +import com.klp.cost.domain.vo.CostItemVo; +import com.klp.cost.domain.bo.CostItemBo; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 成本项目配置Service接口 + * + * @author klp + * @date 2026-05-25 + */ +public interface ICostItemService { + + /** + * 查询成本项目配置 + */ + CostItemVo queryById(Long itemId); + + /** + * 查询成本项目配置列表 + */ + TableDataInfo queryPageList(CostItemBo bo, PageQuery pageQuery); + + /** + * 查询成本项目配置列表 + */ + List queryList(CostItemBo bo); + + /** + * 新增成本项目配置 + */ + Boolean insertByBo(CostItemBo bo); + + /** + * 修改成本项目配置 + */ + Boolean updateByBo(CostItemBo bo); + + /** + * 校验并批量删除成本项目配置信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/klp-cost/src/main/java/com/klp/cost/service/ICostPriceService.java b/klp-cost/src/main/java/com/klp/cost/service/ICostPriceService.java new file mode 100644 index 00000000..7a5dd0ff --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/service/ICostPriceService.java @@ -0,0 +1,49 @@ +package com.klp.cost.service; + +import com.klp.cost.domain.CostPrice; +import com.klp.cost.domain.vo.CostPriceVo; +import com.klp.cost.domain.bo.CostPriceBo; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 成本单价历史Service接口 + * + * @author klp + * @date 2026-05-25 + */ +public interface ICostPriceService { + + /** + * 查询成本单价历史 + */ + CostPriceVo queryById(Long priceId); + + /** + * 查询成本单价历史列表 + */ + TableDataInfo queryPageList(CostPriceBo bo, PageQuery pageQuery); + + /** + * 查询成本单价历史列表 + */ + List queryList(CostPriceBo bo); + + /** + * 新增成本单价历史 + */ + Boolean insertByBo(CostPriceBo bo); + + /** + * 修改成本单价历史 + */ + Boolean updateByBo(CostPriceBo bo); + + /** + * 校验并批量删除成本单价历史信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/klp-cost/src/main/java/com/klp/cost/service/ICostProdDetailService.java b/klp-cost/src/main/java/com/klp/cost/service/ICostProdDetailService.java new file mode 100644 index 00000000..3fc62d9c --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/service/ICostProdDetailService.java @@ -0,0 +1,49 @@ +package com.klp.cost.service; + +import com.klp.cost.domain.CostProdDetail; +import com.klp.cost.domain.vo.CostProdDetailVo; +import com.klp.cost.domain.bo.CostProdDetailBo; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 生产成本明细Service接口 + * + * @author klp + * @date 2026-05-25 + */ +public interface ICostProdDetailService { + + /** + * 查询生产成本明细 + */ + CostProdDetailVo queryById(Long detailId); + + /** + * 查询生产成本明细列表 + */ + TableDataInfo queryPageList(CostProdDetailBo bo, PageQuery pageQuery); + + /** + * 查询生产成本明细列表 + */ + List queryList(CostProdDetailBo bo); + + /** + * 新增生产成本明细 + */ + Boolean insertByBo(CostProdDetailBo bo); + + /** + * 修改生产成本明细 + */ + Boolean updateByBo(CostProdDetailBo bo); + + /** + * 校验并批量删除生产成本明细信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/klp-cost/src/main/java/com/klp/cost/service/ICostProdMetricService.java b/klp-cost/src/main/java/com/klp/cost/service/ICostProdMetricService.java new file mode 100644 index 00000000..5ee4f5ea --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/service/ICostProdMetricService.java @@ -0,0 +1,49 @@ +package com.klp.cost.service; + +import com.klp.cost.domain.CostProdMetric; +import com.klp.cost.domain.vo.CostProdMetricVo; +import com.klp.cost.domain.bo.CostProdMetricBo; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 生产指标明细Service接口 + * + * @author klp + * @date 2026-05-25 + */ +public interface ICostProdMetricService { + + /** + * 查询生产指标明细 + */ + CostProdMetricVo queryById(Long metricId); + + /** + * 查询生产指标明细列表 + */ + TableDataInfo queryPageList(CostProdMetricBo bo, PageQuery pageQuery); + + /** + * 查询生产指标明细列表 + */ + List queryList(CostProdMetricBo bo); + + /** + * 新增生产指标明细 + */ + Boolean insertByBo(CostProdMetricBo bo); + + /** + * 修改生产指标明细 + */ + Boolean updateByBo(CostProdMetricBo bo); + + /** + * 校验并批量删除生产指标明细信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/klp-cost/src/main/java/com/klp/cost/service/ICostProdReportService.java b/klp-cost/src/main/java/com/klp/cost/service/ICostProdReportService.java new file mode 100644 index 00000000..7126e801 --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/service/ICostProdReportService.java @@ -0,0 +1,49 @@ +package com.klp.cost.service; + +import com.klp.cost.domain.CostProdReport; +import com.klp.cost.domain.vo.CostProdReportVo; +import com.klp.cost.domain.bo.CostProdReportBo; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.domain.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 生产月报Service接口 + * + * @author klp + * @date 2026-05-25 + */ +public interface ICostProdReportService { + + /** + * 查询生产月报 + */ + CostProdReportVo queryById(Long reportId); + + /** + * 查询生产月报列表 + */ + TableDataInfo queryPageList(CostProdReportBo bo, PageQuery pageQuery); + + /** + * 查询生产月报列表 + */ + List queryList(CostProdReportBo bo); + + /** + * 新增生产月报 + */ + Boolean insertByBo(CostProdReportBo bo); + + /** + * 修改生产月报 + */ + Boolean updateByBo(CostProdReportBo bo); + + /** + * 校验并批量删除生产月报信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/klp-cost/src/main/java/com/klp/cost/service/impl/CostItemServiceImpl.java b/klp-cost/src/main/java/com/klp/cost/service/impl/CostItemServiceImpl.java new file mode 100644 index 00000000..437ff716 --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/service/impl/CostItemServiceImpl.java @@ -0,0 +1,112 @@ +package com.klp.cost.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.klp.common.utils.StringUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.klp.cost.domain.bo.CostItemBo; +import com.klp.cost.domain.vo.CostItemVo; +import com.klp.cost.domain.CostItem; +import com.klp.cost.mapper.CostItemMapper; +import com.klp.cost.service.ICostItemService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 成本项目配置Service业务层处理 + * + * @author klp + * @date 2026-05-25 + */ +@RequiredArgsConstructor +@Service +public class CostItemServiceImpl implements ICostItemService { + + private final CostItemMapper baseMapper; + + /** + * 查询成本项目配置 + */ + @Override + public CostItemVo queryById(Long itemId){ + return baseMapper.selectVoById(itemId); + } + + /** + * 查询成本项目配置列表 + */ + @Override + public TableDataInfo queryPageList(CostItemBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询成本项目配置列表 + */ + @Override + public List queryList(CostItemBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(CostItemBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotBlank(bo.getItemCode()), CostItem::getItemCode, bo.getItemCode()); + lqw.like(StringUtils.isNotBlank(bo.getItemName()), CostItem::getItemName, bo.getItemName()); + lqw.eq(StringUtils.isNotBlank(bo.getCategory()), CostItem::getCategory, bo.getCategory()); + lqw.eq(StringUtils.isNotBlank(bo.getUnit()), CostItem::getUnit, bo.getUnit()); + return lqw; + } + + /** + * 新增成本项目配置 + */ + @Override + public Boolean insertByBo(CostItemBo bo) { + CostItem add = BeanUtil.toBean(bo, CostItem.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setItemId(add.getItemId()); + } + return flag; + } + + /** + * 修改成本项目配置 + */ + @Override + public Boolean updateByBo(CostItemBo bo) { + CostItem update = BeanUtil.toBean(bo, CostItem.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(CostItem entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除成本项目配置 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/klp-cost/src/main/java/com/klp/cost/service/impl/CostPriceServiceImpl.java b/klp-cost/src/main/java/com/klp/cost/service/impl/CostPriceServiceImpl.java new file mode 100644 index 00000000..f4366055 --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/service/impl/CostPriceServiceImpl.java @@ -0,0 +1,110 @@ +package com.klp.cost.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.klp.cost.domain.bo.CostPriceBo; +import com.klp.cost.domain.vo.CostPriceVo; +import com.klp.cost.domain.CostPrice; +import com.klp.cost.mapper.CostPriceMapper; +import com.klp.cost.service.ICostPriceService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 成本单价历史Service业务层处理 + * + * @author klp + * @date 2026-05-25 + */ +@RequiredArgsConstructor +@Service +public class CostPriceServiceImpl implements ICostPriceService { + + private final CostPriceMapper baseMapper; + + /** + * 查询成本单价历史 + */ + @Override + public CostPriceVo queryById(Long priceId){ + return baseMapper.selectVoById(priceId); + } + + /** + * 查询成本单价历史列表 + */ + @Override + public TableDataInfo queryPageList(CostPriceBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询成本单价历史列表 + */ + @Override + public List queryList(CostPriceBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(CostPriceBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getItemId() != null, CostPrice::getItemId, bo.getItemId()); + lqw.eq(bo.getPrice() != null, CostPrice::getPrice, bo.getPrice()); + lqw.eq(bo.getEffectiveDate() != null, CostPrice::getEffectiveDate, bo.getEffectiveDate()); + return lqw; + } + + /** + * 新增成本单价历史 + */ + @Override + public Boolean insertByBo(CostPriceBo bo) { + CostPrice add = BeanUtil.toBean(bo, CostPrice.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setPriceId(add.getPriceId()); + } + return flag; + } + + /** + * 修改成本单价历史 + */ + @Override + public Boolean updateByBo(CostPriceBo bo) { + CostPrice update = BeanUtil.toBean(bo, CostPrice.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(CostPrice entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除成本单价历史 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/klp-cost/src/main/java/com/klp/cost/service/impl/CostProdDetailServiceImpl.java b/klp-cost/src/main/java/com/klp/cost/service/impl/CostProdDetailServiceImpl.java new file mode 100644 index 00000000..a6892f7c --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/service/impl/CostProdDetailServiceImpl.java @@ -0,0 +1,115 @@ +package com.klp.cost.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.klp.common.utils.StringUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.klp.cost.domain.bo.CostProdDetailBo; +import com.klp.cost.domain.vo.CostProdDetailVo; +import com.klp.cost.domain.CostProdDetail; +import com.klp.cost.mapper.CostProdDetailMapper; +import com.klp.cost.service.ICostProdDetailService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 生产成本明细Service业务层处理 + * + * @author klp + * @date 2026-05-25 + */ +@RequiredArgsConstructor +@Service +public class CostProdDetailServiceImpl implements ICostProdDetailService { + + private final CostProdDetailMapper baseMapper; + + /** + * 查询生产成本明细 + */ + @Override + public CostProdDetailVo queryById(Long detailId){ + return baseMapper.selectVoById(detailId); + } + + /** + * 查询生产成本明细列表 + */ + @Override + public TableDataInfo queryPageList(CostProdDetailBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询生产成本明细列表 + */ + @Override + public List queryList(CostProdDetailBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(CostProdDetailBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getReportId() != null, CostProdDetail::getReportId, bo.getReportId()); + lqw.eq(StringUtils.isNotBlank(bo.getShift()), CostProdDetail::getShift, bo.getShift()); + lqw.eq(bo.getDetailDate() != null, CostProdDetail::getDetailDate, bo.getDetailDate()); + lqw.eq(bo.getItemId() != null, CostProdDetail::getItemId, bo.getItemId()); + lqw.eq(bo.getQuantity() != null, CostProdDetail::getQuantity, bo.getQuantity()); + lqw.eq(bo.getUnitPrice() != null, CostProdDetail::getUnitPrice, bo.getUnitPrice()); + lqw.eq(bo.getAmount() != null, CostProdDetail::getAmount, bo.getAmount()); + return lqw; + } + + /** + * 新增生产成本明细 + */ + @Override + public Boolean insertByBo(CostProdDetailBo bo) { + CostProdDetail add = BeanUtil.toBean(bo, CostProdDetail.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setDetailId(add.getDetailId()); + } + return flag; + } + + /** + * 修改生产成本明细 + */ + @Override + public Boolean updateByBo(CostProdDetailBo bo) { + CostProdDetail update = BeanUtil.toBean(bo, CostProdDetail.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(CostProdDetail entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除生产成本明细 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/klp-cost/src/main/java/com/klp/cost/service/impl/CostProdMetricServiceImpl.java b/klp-cost/src/main/java/com/klp/cost/service/impl/CostProdMetricServiceImpl.java new file mode 100644 index 00000000..f9303455 --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/service/impl/CostProdMetricServiceImpl.java @@ -0,0 +1,113 @@ +package com.klp.cost.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.klp.common.utils.StringUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.klp.cost.domain.bo.CostProdMetricBo; +import com.klp.cost.domain.vo.CostProdMetricVo; +import com.klp.cost.domain.CostProdMetric; +import com.klp.cost.mapper.CostProdMetricMapper; +import com.klp.cost.service.ICostProdMetricService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 生产指标明细Service业务层处理 + * + * @author klp + * @date 2026-05-25 + */ +@RequiredArgsConstructor +@Service +public class CostProdMetricServiceImpl implements ICostProdMetricService { + + private final CostProdMetricMapper baseMapper; + + /** + * 查询生产指标明细 + */ + @Override + public CostProdMetricVo queryById(Long metricId){ + return baseMapper.selectVoById(metricId); + } + + /** + * 查询生产指标明细列表 + */ + @Override + public TableDataInfo queryPageList(CostProdMetricBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询生产指标明细列表 + */ + @Override + public List queryList(CostProdMetricBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(CostProdMetricBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getReportId() != null, CostProdMetric::getReportId, bo.getReportId()); + lqw.eq(StringUtils.isNotBlank(bo.getMetricCode()), CostProdMetric::getMetricCode, bo.getMetricCode()); + lqw.like(StringUtils.isNotBlank(bo.getMetricName()), CostProdMetric::getMetricName, bo.getMetricName()); + lqw.eq(StringUtils.isNotBlank(bo.getMetricFormula()), CostProdMetric::getMetricFormula, bo.getMetricFormula()); + lqw.eq(bo.getMetricValue() != null, CostProdMetric::getMetricValue, bo.getMetricValue()); + return lqw; + } + + /** + * 新增生产指标明细 + */ + @Override + public Boolean insertByBo(CostProdMetricBo bo) { + CostProdMetric add = BeanUtil.toBean(bo, CostProdMetric.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setMetricId(add.getMetricId()); + } + return flag; + } + + /** + * 修改生产指标明细 + */ + @Override + public Boolean updateByBo(CostProdMetricBo bo) { + CostProdMetric update = BeanUtil.toBean(bo, CostProdMetric.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(CostProdMetric entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除生产指标明细 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/klp-cost/src/main/java/com/klp/cost/service/impl/CostProdReportServiceImpl.java b/klp-cost/src/main/java/com/klp/cost/service/impl/CostProdReportServiceImpl.java new file mode 100644 index 00000000..717c298d --- /dev/null +++ b/klp-cost/src/main/java/com/klp/cost/service/impl/CostProdReportServiceImpl.java @@ -0,0 +1,113 @@ +package com.klp.cost.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.klp.common.core.page.TableDataInfo; +import com.klp.common.core.domain.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.klp.common.utils.StringUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import com.klp.cost.domain.bo.CostProdReportBo; +import com.klp.cost.domain.vo.CostProdReportVo; +import com.klp.cost.domain.CostProdReport; +import com.klp.cost.mapper.CostProdReportMapper; +import com.klp.cost.service.ICostProdReportService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 生产月报Service业务层处理 + * + * @author klp + * @date 2026-05-25 + */ +@RequiredArgsConstructor +@Service +public class CostProdReportServiceImpl implements ICostProdReportService { + + private final CostProdReportMapper baseMapper; + + /** + * 查询生产月报 + */ + @Override + public CostProdReportVo queryById(Long reportId){ + return baseMapper.selectVoById(reportId); + } + + /** + * 查询生产月报列表 + */ + @Override + public TableDataInfo queryPageList(CostProdReportBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询生产月报列表 + */ + @Override + public List queryList(CostProdReportBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(CostProdReportBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotBlank(bo.getReportTitle()), CostProdReport::getReportTitle, bo.getReportTitle()); + lqw.eq(bo.getReportDate() != null, CostProdReport::getReportDate, bo.getReportDate()); + lqw.eq(StringUtils.isNotBlank(bo.getLineType()), CostProdReport::getLineType, bo.getLineType()); + lqw.eq(bo.getInputWeight() != null, CostProdReport::getInputWeight, bo.getInputWeight()); + lqw.eq(bo.getOutputWeight() != null, CostProdReport::getOutputWeight, bo.getOutputWeight()); + return lqw; + } + + /** + * 新增生产月报 + */ + @Override + public Boolean insertByBo(CostProdReportBo bo) { + CostProdReport add = BeanUtil.toBean(bo, CostProdReport.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setReportId(add.getReportId()); + } + return flag; + } + + /** + * 修改生产月报 + */ + @Override + public Boolean updateByBo(CostProdReportBo bo) { + CostProdReport update = BeanUtil.toBean(bo, CostProdReport.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(CostProdReport entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除生产月报 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/klp-cost/src/main/resources/mapper/cost/CostItemMapper.xml b/klp-cost/src/main/resources/mapper/cost/CostItemMapper.xml new file mode 100644 index 00000000..fe2965c4 --- /dev/null +++ b/klp-cost/src/main/resources/mapper/cost/CostItemMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/klp-cost/src/main/resources/mapper/cost/CostPriceMapper.xml b/klp-cost/src/main/resources/mapper/cost/CostPriceMapper.xml new file mode 100644 index 00000000..cf5b72a4 --- /dev/null +++ b/klp-cost/src/main/resources/mapper/cost/CostPriceMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + diff --git a/klp-cost/src/main/resources/mapper/cost/CostProdDetailMapper.xml b/klp-cost/src/main/resources/mapper/cost/CostProdDetailMapper.xml new file mode 100644 index 00000000..a7246e52 --- /dev/null +++ b/klp-cost/src/main/resources/mapper/cost/CostProdDetailMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/klp-cost/src/main/resources/mapper/cost/CostProdMetricMapper.xml b/klp-cost/src/main/resources/mapper/cost/CostProdMetricMapper.xml new file mode 100644 index 00000000..5628ff71 --- /dev/null +++ b/klp-cost/src/main/resources/mapper/cost/CostProdMetricMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/klp-cost/src/main/resources/mapper/cost/CostProdReportMapper.xml b/klp-cost/src/main/resources/mapper/cost/CostProdReportMapper.xml new file mode 100644 index 00000000..89da634b --- /dev/null +++ b/klp-cost/src/main/resources/mapper/cost/CostProdReportMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/pom.xml b/pom.xml index 5aa2dba2..5ca7ccf2 100644 --- a/pom.xml +++ b/pom.xml @@ -405,6 +405,11 @@ klp-aps ${klp-flowable-plus.version} + + com.klp + klp-cost + ${klp-flowable-plus.version} + @@ -431,6 +436,7 @@ klp-crm klp-da klp-aps + klp-cost pom