From a32384444070fb827257e45a6efb3189f665d3ce Mon Sep 17 00:00:00 2001 From: dfdg <2710245601@qq.com> Date: Fri, 17 Oct 2025 14:15:35 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AB=8B=E9=A1=B9=E4=B8=8E=E6=88=90=E6=9C=AC-?= =?UTF-8?q?=E6=88=90=E6=9C=AC=E9=A2=84=E7=AE=97-=E6=80=BB=E4=BD=93?= =?UTF-8?q?=E8=AE=A1=E5=88=92=E6=88=90=E6=9C=AC=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/XzdCbysSscbController.java | 105 +++++++ .../controller/XzdCbysZjhcbController.java | 105 +++++++ .../XzdCbysZtjhcbBgjlController.java | 105 +++++++ .../costBudget/domain/XzdCbysSscb.java | 82 ++++++ .../costBudget/domain/XzdCbysZjhcb.java | 148 ++++++++++ .../costBudget/domain/XzdCbysZtjhcbBgjl.java | 103 +++++++ .../costBudget/domain/bo/XzdCbysSscbBo.java | 82 ++++++ .../costBudget/domain/bo/XzdCbysZjhcbBo.java | 170 +++++++++++ .../domain/bo/XzdCbysZtjhcbBgjlBo.java | 99 +++++++ .../costBudget/domain/vo/XzdCbysSscbVo.java | 101 +++++++ .../costBudget/domain/vo/XzdCbysZjhcbVo.java | 208 +++++++++++++ .../domain/vo/XzdCbysZtjhcbBgjlVo.java | 121 ++++++++ .../costBudget/mapper/XzdCbysSscbMapper.java | 15 + .../costBudget/mapper/XzdCbysZjhcbMapper.java | 15 + .../mapper/XzdCbysZtjhcbBgjlMapper.java | 15 + .../service/IXzdCbysSscbService.java | 70 +++++ .../service/IXzdCbysZjhcbService.java | 70 +++++ .../service/IXzdCbysZtjhcbBgjlService.java | 70 +++++ .../service/impl/XzdCbysSscbServiceImpl.java | 139 +++++++++ .../service/impl/XzdCbysZjhcbServiceImpl.java | 277 ++++++++++++++++++ .../impl/XzdCbysZtjhcbBgjlServiceImpl.java | 141 +++++++++ .../costBudget/XzdCbysSscbMapper.xml | 7 + .../costBudget/XzdCbysZjhcbMapper.xml | 7 + .../costBudget/XzdCbysZtjhcbBgjlMapper.xml | 7 + 24 files changed, 2262 insertions(+) create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/controller/XzdCbysSscbController.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/controller/XzdCbysZjhcbController.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/controller/XzdCbysZtjhcbBgjlController.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/XzdCbysSscb.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/XzdCbysZjhcb.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/XzdCbysZtjhcbBgjl.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/bo/XzdCbysSscbBo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/bo/XzdCbysZjhcbBo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/bo/XzdCbysZtjhcbBgjlBo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/vo/XzdCbysSscbVo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/vo/XzdCbysZjhcbVo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/vo/XzdCbysZtjhcbBgjlVo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/mapper/XzdCbysSscbMapper.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/mapper/XzdCbysZjhcbMapper.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/mapper/XzdCbysZtjhcbBgjlMapper.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/IXzdCbysSscbService.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/IXzdCbysZjhcbService.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/IXzdCbysZtjhcbBgjlService.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/impl/XzdCbysSscbServiceImpl.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/impl/XzdCbysZjhcbServiceImpl.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/impl/XzdCbysZtjhcbBgjlServiceImpl.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/xzd/costProjectApproval/costBudget/XzdCbysSscbMapper.xml create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/xzd/costProjectApproval/costBudget/XzdCbysZjhcbMapper.xml create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/xzd/costProjectApproval/costBudget/XzdCbysZtjhcbBgjlMapper.xml diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/controller/XzdCbysSscbController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/controller/XzdCbysSscbController.java new file mode 100644 index 00000000..94804632 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/controller/XzdCbysSscbController.java @@ -0,0 +1,105 @@ +package org.dromara.xzd.costProjectApproval.costBudget.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysSscbVo; +import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysSscbBo; +import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysSscbService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 税收项明细 + * + * @author Lion Li + * @date 2025-10-17 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/costBudget/cbysSscb") +public class XzdCbysSscbController extends BaseController { + + private final IXzdCbysSscbService xzdCbysSscbService; + + /** + * 查询税收项明细列表 + */ + @SaCheckPermission("costBudget:cbysSscb:list") + @GetMapping("/list") + public TableDataInfo list(XzdCbysSscbBo bo, PageQuery pageQuery) { + return xzdCbysSscbService.queryPageList(bo, pageQuery); + } + + /** + * 导出税收项明细列表 + */ + @SaCheckPermission("costBudget:cbysSscb:export") + @Log(title = "税收项明细", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(XzdCbysSscbBo bo, HttpServletResponse response) { + List list = xzdCbysSscbService.queryList(bo); + ExcelUtil.exportExcel(list, "税收项明细", XzdCbysSscbVo.class, response); + } + + /** + * 获取税收项明细详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("costBudget:cbysSscb:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(xzdCbysSscbService.queryById(id)); + } + + /** + * 新增税收项明细 + */ + @SaCheckPermission("costBudget:cbysSscb:add") + @Log(title = "税收项明细", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody XzdCbysSscbBo bo) { + return toAjax(xzdCbysSscbService.insertByBo(bo)); + } + + /** + * 修改税收项明细 + */ + @SaCheckPermission("costBudget:cbysSscb:edit") + @Log(title = "税收项明细", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody XzdCbysSscbBo bo) { + return toAjax(xzdCbysSscbService.updateByBo(bo)); + } + + /** + * 删除税收项明细 + * + * @param ids 主键串 + */ + @SaCheckPermission("costBudget:cbysSscb:remove") + @Log(title = "税收项明细", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(xzdCbysSscbService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/controller/XzdCbysZjhcbController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/controller/XzdCbysZjhcbController.java new file mode 100644 index 00000000..97725212 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/controller/XzdCbysZjhcbController.java @@ -0,0 +1,105 @@ +package org.dromara.xzd.costProjectApproval.costBudget.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbVo; +import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZjhcbBo; +import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysZjhcbService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 立项及成本-成本预算-总体计划成本 + * + * @author Lion Li + * @date 2025-10-17 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/costBudget/cbysZjhcb") +public class XzdCbysZjhcbController extends BaseController { + + private final IXzdCbysZjhcbService xzdCbysZjhcbService; + + /** + * 查询立项及成本-成本预算-总体计划成本列表 + */ + @SaCheckPermission("costBudget:cbysZjhcb:list") + @GetMapping("/list") + public TableDataInfo list(XzdCbysZjhcbBo bo, PageQuery pageQuery) { + return xzdCbysZjhcbService.queryPageList(bo, pageQuery); + } + + /** + * 导出立项及成本-成本预算-总体计划成本列表 + */ + @SaCheckPermission("costBudget:cbysZjhcb:export") + @Log(title = "立项及成本-成本预算-总体计划成本", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(XzdCbysZjhcbBo bo, HttpServletResponse response) { + List list = xzdCbysZjhcbService.queryList(bo); + ExcelUtil.exportExcel(list, "立项及成本-成本预算-总体计划成本", XzdCbysZjhcbVo.class, response); + } + + /** + * 获取立项及成本-成本预算-总体计划成本详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("costBudget:cbysZjhcb:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(xzdCbysZjhcbService.queryById(id)); + } + + /** + * 新增立项及成本-成本预算-总体计划成本 + */ + @SaCheckPermission("costBudget:cbysZjhcb:add") + @Log(title = "立项及成本-成本预算-总体计划成本", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody XzdCbysZjhcbBo bo) { + return toAjax(xzdCbysZjhcbService.insertByBo(bo)); + } + + /** + * 修改立项及成本-成本预算-总体计划成本 + */ + @SaCheckPermission("costBudget:cbysZjhcb:edit") + @Log(title = "立项及成本-成本预算-总体计划成本", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody XzdCbysZjhcbBo bo) { + return toAjax(xzdCbysZjhcbService.updateByBo(bo)); + } + + /** + * 删除立项及成本-成本预算-总体计划成本 + * + * @param ids 主键串 + */ + @SaCheckPermission("costBudget:cbysZjhcb:remove") + @Log(title = "立项及成本-成本预算-总体计划成本", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(xzdCbysZjhcbService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/controller/XzdCbysZtjhcbBgjlController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/controller/XzdCbysZtjhcbBgjlController.java new file mode 100644 index 00000000..f5ef3c1c --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/controller/XzdCbysZtjhcbBgjlController.java @@ -0,0 +1,105 @@ +package org.dromara.xzd.costProjectApproval.costBudget.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZtjhcbBgjlVo; +import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZtjhcbBgjlBo; +import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysZtjhcbBgjlService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 立项及成本-成本预算-变更记录 + * + * @author Lion Li + * @date 2025-10-17 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/costBudget/cbysZtjhcbBgjl") +public class XzdCbysZtjhcbBgjlController extends BaseController { + + private final IXzdCbysZtjhcbBgjlService xzdCbysZtjhcbBgjlService; + + /** + * 查询立项及成本-成本预算-变更记录列表 + */ + @SaCheckPermission("costBudget:cbysZtjhcbBgjl:list") + @GetMapping("/list") + public TableDataInfo list(XzdCbysZtjhcbBgjlBo bo, PageQuery pageQuery) { + return xzdCbysZtjhcbBgjlService.queryPageList(bo, pageQuery); + } + + /** + * 导出立项及成本-成本预算-变更记录列表 + */ + @SaCheckPermission("costBudget:cbysZtjhcbBgjl:export") + @Log(title = "立项及成本-成本预算-变更记录", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(XzdCbysZtjhcbBgjlBo bo, HttpServletResponse response) { + List list = xzdCbysZtjhcbBgjlService.queryList(bo); + ExcelUtil.exportExcel(list, "立项及成本-成本预算-变更记录", XzdCbysZtjhcbBgjlVo.class, response); + } + + /** + * 获取立项及成本-成本预算-变更记录详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("costBudget:cbysZtjhcbBgjl:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(xzdCbysZtjhcbBgjlService.queryById(id)); + } + + /** + * 新增立项及成本-成本预算-变更记录 + */ + @SaCheckPermission("costBudget:cbysZtjhcbBgjl:add") + @Log(title = "立项及成本-成本预算-变更记录", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody XzdCbysZtjhcbBgjlBo bo) { + return toAjax(xzdCbysZtjhcbBgjlService.insertByBo(bo)); + } + + /** + * 修改立项及成本-成本预算-变更记录 + */ + @SaCheckPermission("costBudget:cbysZtjhcbBgjl:edit") + @Log(title = "立项及成本-成本预算-变更记录", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody XzdCbysZtjhcbBgjlBo bo) { + return toAjax(xzdCbysZtjhcbBgjlService.updateByBo(bo)); + } + + /** + * 删除立项及成本-成本预算-变更记录 + * + * @param ids 主键串 + */ + @SaCheckPermission("costBudget:cbysZtjhcbBgjl:remove") + @Log(title = "立项及成本-成本预算-变更记录", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(xzdCbysZtjhcbBgjlService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/XzdCbysSscb.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/XzdCbysSscb.java new file mode 100644 index 00000000..da797e6c --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/XzdCbysSscb.java @@ -0,0 +1,82 @@ +package org.dromara.xzd.costProjectApproval.costBudget.domain; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.math.BigDecimal; + +import java.io.Serial; + +/** + * 税收项明细对象 xzd_cbys_sscb + * + * @author Lion Li + * @date 2025-10-17 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("xzd_cbys_sscb") +public class XzdCbysSscb extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 关联主单据的ID(外键,指向对应主表,如预算/付款单据表等) + */ + private Long mainDocumentId; + + /** + * 税收项(带*,必填) + */ + private String taxItem; + + /** + * 计税金额 + */ + private BigDecimal taxableAmount; + + /** + * 税率 + */ + private BigDecimal taxRate; + + /** + * 应纳税额 + */ + private BigDecimal taxPayable; + + /** + * 可抵税额 + */ + private BigDecimal taxDeductible; + + /** + * 应缴税额 + */ + private BigDecimal taxDue; + + /** + * 备注 + */ + private String remark; + + /** + * 单据引用 + */ + private String documentReference; + + /** + * 文件ID + */ + private String fileId; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/XzdCbysZjhcb.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/XzdCbysZjhcb.java new file mode 100644 index 00000000..e17a720d --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/XzdCbysZjhcb.java @@ -0,0 +1,148 @@ +package org.dromara.xzd.costProjectApproval.costBudget.domain; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.math.BigDecimal; + +import java.io.Serial; +import java.time.LocalDate; + +/** + * 立项及成本-成本预算-总体计划成本对象 xzd_cbys_zjhcb + * + * @author Lion Li + * @date 2025-10-17 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("xzd_cbys_zjhcb") +public class XzdCbysZjhcb extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 单据编码(带*,必填) + */ + private String docCode; + + /** + * 单据标题(带*,必填) + */ + private String docTitle; + + /** + * 单据日期 + */ + private LocalDate docDate; + + /** + * 工程项目(带*,必填) + */ + private Long projectId; + + /** + * 预算分类(带*,必填) + */ + private String budgetCategory; + + /** + * 总不含税金额 + */ + private BigDecimal totalTaxExclAmount; + + /** + * 总税额 + */ + private BigDecimal totalTaxAmount; + + /** + * 总含税金额 + */ + private BigDecimal totalTaxInclAmount; + + /** + * 项目责任人 + */ + private Long projectLeader; + + /** + * 执行项目经理 + */ + private Long execProjectManager; + + /** + * 承包合同金额(带*,必填) + */ + private BigDecimal contractAmount; + + /** + * 税务成本 + */ + private BigDecimal taxCost; + + /** + * 利润率 + */ + private BigDecimal profitRate; + + /** + * 利润金额 + */ + private BigDecimal profitAmount; + + /** + * 备注 + */ + private String remark; + + /** + * 启用成本预控模式(0=未启用,1=启用) + */ + private Long enableCostPrecontrol; + + /** + * 成本控制模式(如WBS+CBS) + */ + private String costControlMode; + + /** + * 外币含税类型 + */ + private String foreignCurrencyTaxType; + + /** + * 禁止标识 + */ + private String forbidFlag; + + /** + * 启用按科目属性分页签编制模式(0=未启用,1=启用) + */ + private Long enableAccountAttrTab; + + /** + * 启用物料组编制模式(0=未启用,1=启用) + */ + private Long enableMaterialGroup; + + /** + * 单据引用 + */ + private String documentReference; + + /** + * 文件ID + */ + private String fileId; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/XzdCbysZtjhcbBgjl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/XzdCbysZtjhcbBgjl.java new file mode 100644 index 00000000..53fcfb04 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/XzdCbysZtjhcbBgjl.java @@ -0,0 +1,103 @@ +package org.dromara.xzd.costProjectApproval.costBudget.domain; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.math.BigDecimal; + +import java.io.Serial; +import java.time.LocalDate; + +/** + * 立项及成本-成本预算-变更记录对象 xzd_cbys_ztjhcb_bgjl + * + * @author Lion Li + * @date 2025-10-17 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("xzd_cbys_ztjhcb_bgjl") +public class XzdCbysZtjhcbBgjl extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 行号 + */ + private Long mainDocumentId; + + /** + * 附件(关联附件表可按需调整为外键) + */ + private String attachment; + + /** + * 单据编码 + */ + private String docCode; + + /** + * 单据标题 + */ + private String docTitle; + + /** + * 单据日期 + */ + private LocalDate docDate; + + /** + * 工程项目 + */ + private String projectName; + + /** + * 变更根源 + */ + private String changeSource; + + /** + * 变更不含税金额 + */ + private BigDecimal changeTaxExclAmount; + + /** + * 变更含税金额 + */ + private BigDecimal changeTaxInclAmount; + + /** + * 核准人 + */ + private String approver; + + /** + * 项目责任人 + */ + private String projectLeader; + + /** + * 备注 + */ + private String remark; + + /** + * 单据引用 + */ + private String documentReference; + + /** + * 文件ID + */ + private String fileId; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/bo/XzdCbysSscbBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/bo/XzdCbysSscbBo.java new file mode 100644 index 00000000..2398922b --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/bo/XzdCbysSscbBo.java @@ -0,0 +1,82 @@ +package org.dromara.xzd.costProjectApproval.costBudget.domain.bo; + +import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysSscb; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +import java.math.BigDecimal; + +/** + * 税收项明细业务对象 xzd_cbys_sscb + * + * @author Lion Li + * @date 2025-10-17 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = XzdCbysSscb.class, reverseConvertGenerate = false) +public class XzdCbysSscbBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 关联主单据的ID(外键,指向对应主表,如预算/付款单据表等) + */ + private Long mainDocumentId; + + /** + * 税收项(带*,必填) + */ + @NotBlank(message = "税收项(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String taxItem; + + /** + * 计税金额 + */ + private BigDecimal taxableAmount; + + /** + * 税率 + */ + private BigDecimal taxRate; + + /** + * 应纳税额 + */ + private BigDecimal taxPayable; + + /** + * 可抵税额 + */ + private BigDecimal taxDeductible; + + /** + * 应缴税额 + */ + private BigDecimal taxDue; + + /** + * 备注 + */ + private String remark; + + /** + * 单据引用 + */ + private String documentReference; + + /** + * 文件ID + */ + private String fileId; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/bo/XzdCbysZjhcbBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/bo/XzdCbysZjhcbBo.java new file mode 100644 index 00000000..ca962571 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/bo/XzdCbysZjhcbBo.java @@ -0,0 +1,170 @@ +package org.dromara.xzd.costProjectApproval.costBudget.domain.bo; + +import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysSscb; +import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysWgcbtbFubiao; +import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcb; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZtjhcbBgjl; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.List; + +/** + * 立项及成本-成本预算-总体计划成本业务对象 xzd_cbys_zjhcb + * + * @author Lion Li + * @date 2025-10-17 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = XzdCbysZjhcb.class, reverseConvertGenerate = false) +public class XzdCbysZjhcbBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 单据编码(带*,必填) + */ + @NotBlank(message = "单据编码(带*,必填)不能为空", groups = { EditGroup.class }) + private String docCode; + + /** + * 单据标题(带*,必填) + */ + @NotBlank(message = "单据标题(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String docTitle; + + /** + * 单据日期 + */ + private LocalDate docDate; + + /** + * 工程项目(带*,必填) + */ + @NotNull(message = "工程项目(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long projectId; + + /** + * 预算分类(带*,必填) + */ + @NotBlank(message = "预算分类(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String budgetCategory; + + /** + * 总不含税金额 + */ + private BigDecimal totalTaxExclAmount; + + /** + * 总税额 + */ + private BigDecimal totalTaxAmount; + + /** + * 总含税金额 + */ + private BigDecimal totalTaxInclAmount; + + /** + * 项目责任人 + */ + private Long projectLeader; + + /** + * 执行项目经理 + */ + private Long execProjectManager; + + /** + * 承包合同金额(带*,必填) + */ + @NotNull(message = "承包合同金额(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal contractAmount; + + /** + * 税务成本 + */ + private BigDecimal taxCost; + + /** + * 利润率 + */ + private BigDecimal profitRate; + + /** + * 利润金额 + */ + private BigDecimal profitAmount; + + /** + * 备注 + */ + private String remark; + + /** + * 启用成本预控模式(0=未启用,1=启用) + */ + private Long enableCostPrecontrol; + + /** + * 成本控制模式(如WBS+CBS) + */ + private String costControlMode; + + /** + * 外币含税类型 + */ + private String foreignCurrencyTaxType; + + /** + * 禁止标识 + */ + private String forbidFlag; + + /** + * 启用按科目属性分页签编制模式(0=未启用,1=启用) + */ + private Long enableAccountAttrTab; + + /** + * 启用物料组编制模式(0=未启用,1=启用) + */ + private Long enableMaterialGroup; + + /** + * 单据引用 + */ + private String documentReference; + + /** + * 文件ID + */ + private String fileId; + + /** + * 变更记录 + */ + List xzdCbysZtjhcbBgjl; + + /** + * 成本明细 + */ + List xzdCbysWgcbtbFubiao; + + /** + * 税收成本 + */ + List xzdCbysSscb; +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/bo/XzdCbysZtjhcbBgjlBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/bo/XzdCbysZtjhcbBgjlBo.java new file mode 100644 index 00000000..56f6a85d --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/bo/XzdCbysZtjhcbBgjlBo.java @@ -0,0 +1,99 @@ +package org.dromara.xzd.costProjectApproval.costBudget.domain.bo; + +import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZtjhcbBgjl; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +import java.math.BigDecimal; +import java.time.LocalDate; + +/** + * 立项及成本-成本预算-变更记录业务对象 xzd_cbys_ztjhcb_bgjl + * + * @author Lion Li + * @date 2025-10-17 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = XzdCbysZtjhcbBgjl.class, reverseConvertGenerate = false) +public class XzdCbysZtjhcbBgjlBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + private Long mainDocumentId; + + /** + * 附件(关联附件表可按需调整为外键) + */ + private String attachment; + + /** + * 单据编码 + */ + private String docCode; + + /** + * 单据标题 + */ + private String docTitle; + + /** + * 单据日期 + */ + private LocalDate docDate; + + /** + * 工程项目 + */ + private String projectName; + + /** + * 变更根源 + */ + private String changeSource; + + /** + * 变更不含税金额 + */ + private BigDecimal changeTaxExclAmount; + + /** + * 变更含税金额 + */ + private BigDecimal changeTaxInclAmount; + + /** + * 核准人 + */ + private String approver; + + /** + * 项目责任人 + */ + private String projectLeader; + + /** + * 备注 + */ + private String remark; + + /** + * 单据引用 + */ + private String documentReference; + + /** + * 文件ID + */ + private String fileId; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/vo/XzdCbysSscbVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/vo/XzdCbysSscbVo.java new file mode 100644 index 00000000..f7615c5b --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/vo/XzdCbysSscbVo.java @@ -0,0 +1,101 @@ +package org.dromara.xzd.costProjectApproval.costBudget.domain.vo; + +import java.math.BigDecimal; +import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysSscb; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 税收项明细视图对象 xzd_cbys_sscb + * + * @author Lion Li + * @date 2025-10-17 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = XzdCbysSscb.class) +public class XzdCbysSscbVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 关联主单据的ID(外键,指向对应主表,如预算/付款单据表等) + */ + @ExcelProperty(value = "关联主单据的ID", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "外=键,指向对应主表,如预算/付款单据表等") + private Long mainDocumentId; + + /** + * 税收项(带*,必填) + */ + @ExcelProperty(value = "税收项", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "带=*,必填") + private String taxItem; + + /** + * 计税金额 + */ + @ExcelProperty(value = "计税金额") + private BigDecimal taxableAmount; + + /** + * 税率 + */ + @ExcelProperty(value = "税率") + private BigDecimal taxRate; + + /** + * 应纳税额 + */ + @ExcelProperty(value = "应纳税额") + private BigDecimal taxPayable; + + /** + * 可抵税额 + */ + @ExcelProperty(value = "可抵税额") + private BigDecimal taxDeductible; + + /** + * 应缴税额 + */ + @ExcelProperty(value = "应缴税额") + private BigDecimal taxDue; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 单据引用 + */ + @ExcelProperty(value = "单据引用") + private String documentReference; + + /** + * 文件ID + */ + @ExcelProperty(value = "文件ID") + private String fileId; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/vo/XzdCbysZjhcbVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/vo/XzdCbysZjhcbVo.java new file mode 100644 index 00000000..3fb3898f --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/vo/XzdCbysZjhcbVo.java @@ -0,0 +1,208 @@ +package org.dromara.xzd.costProjectApproval.costBudget.domain.vo; + +import java.math.BigDecimal; + +import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysSscb; +import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysWgcbtbFubiao; +import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcb; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZtjhcbBgjl; + +import java.io.Serial; +import java.io.Serializable; +import java.time.LocalDate; +import java.util.Date; +import java.util.List; + + +/** + * 立项及成本-成本预算-总体计划成本视图对象 xzd_cbys_zjhcb + * + * @author Lion Li + * @date 2025-10-17 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = XzdCbysZjhcb.class) +public class XzdCbysZjhcbVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 单据编码(带*,必填) + */ + @ExcelProperty(value = "单据编码", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "带=*,必填") + private String docCode; + + /** + * 单据标题(带*,必填) + */ + @ExcelProperty(value = "单据标题", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "带=*,必填") + private String docTitle; + + /** + * 单据日期 + */ + @ExcelProperty(value = "单据日期") + private LocalDate docDate; + + /** + * 工程项目(带*,必填) + */ + @ExcelProperty(value = "工程项目", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "带=*,必填") + private Long projectId; + private String projectName; + + /** + * 预算分类(带*,必填) + */ + @ExcelProperty(value = "预算分类", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "带=*,必填") + private String budgetCategory; + + /** + * 总不含税金额 + */ + @ExcelProperty(value = "总不含税金额") + private BigDecimal totalTaxExclAmount; + + /** + * 总税额 + */ + @ExcelProperty(value = "总税额") + private BigDecimal totalTaxAmount; + + /** + * 总含税金额 + */ + @ExcelProperty(value = "总含税金额") + private BigDecimal totalTaxInclAmount; + + /** + * 项目责任人 + */ + @ExcelProperty(value = "项目责任人") + private Long projectLeader; + private String projectLeaderName; + + /** + * 执行项目经理 + */ + @ExcelProperty(value = "执行项目经理") + private Long execProjectManager; + private String execProjectManagerName; + + /** + * 承包合同金额(带*,必填) + */ + @ExcelProperty(value = "承包合同金额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "带=*,必填") + private BigDecimal contractAmount; + + /** + * 税务成本 + */ + @ExcelProperty(value = "税务成本") + private BigDecimal taxCost; + + /** + * 利润率 + */ + @ExcelProperty(value = "利润率") + private BigDecimal profitRate; + + /** + * 利润金额 + */ + @ExcelProperty(value = "利润金额") + private BigDecimal profitAmount; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 启用成本预控模式(0=未启用,1=启用) + */ + @ExcelProperty(value = "启用成本预控模式", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0==未启用,1=启用") + private Long enableCostPrecontrol; + + /** + * 成本控制模式(如WBS+CBS) + */ + @ExcelProperty(value = "成本控制模式", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "如=WBS+CBS") + private String costControlMode; + + /** + * 外币含税类型 + */ + @ExcelProperty(value = "外币含税类型") + private String foreignCurrencyTaxType; + + /** + * 禁止标识 + */ + @ExcelProperty(value = "禁止标识") + private String forbidFlag; + + /** + * 启用按科目属性分页签编制模式(0=未启用,1=启用) + */ + @ExcelProperty(value = "启用按科目属性分页签编制模式", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0==未启用,1=启用") + private Long enableAccountAttrTab; + + /** + * 启用物料组编制模式(0=未启用,1=启用) + */ + @ExcelProperty(value = "启用物料组编制模式", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0==未启用,1=启用") + private Long enableMaterialGroup; + + /** + * 单据引用 + */ + @ExcelProperty(value = "单据引用") + private String documentReference; + + /** + * 文件ID + */ + @ExcelProperty(value = "文件ID") + private String fileId; + + + /** + * 变更记录 + */ + List xzdCbysZtjhcbBgjl; + + /** + * 成本明细 + */ + List xzdCbysWgcbtbFubiao; + + /** + * 税收成本 + */ + List xzdCbysSscb; +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/vo/XzdCbysZtjhcbBgjlVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/vo/XzdCbysZtjhcbBgjlVo.java new file mode 100644 index 00000000..ad259510 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/domain/vo/XzdCbysZtjhcbBgjlVo.java @@ -0,0 +1,121 @@ +package org.dromara.xzd.costProjectApproval.costBudget.domain.vo; + +import java.math.BigDecimal; +import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZtjhcbBgjl; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.time.LocalDate; +import java.util.Date; + + + +/** + * 立项及成本-成本预算-变更记录视图对象 xzd_cbys_ztjhcb_bgjl + * + * @author Lion Li + * @date 2025-10-17 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = XzdCbysZtjhcbBgjl.class) +public class XzdCbysZtjhcbBgjlVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + private Long mainDocumentId; + + /** + * 附件(关联附件表可按需调整为外键) + */ + @ExcelProperty(value = "附件", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "关=联附件表可按需调整为外键") + private String attachment; + + /** + * 单据编码 + */ + @ExcelProperty(value = "单据编码") + private String docCode; + + /** + * 单据标题 + */ + @ExcelProperty(value = "单据标题") + private String docTitle; + + /** + * 单据日期 + */ + @ExcelProperty(value = "单据日期") + private LocalDate docDate; + + /** + * 工程项目 + */ + @ExcelProperty(value = "工程项目") + private String projectName; + + /** + * 变更根源 + */ + @ExcelProperty(value = "变更根源") + private String changeSource; + + /** + * 变更不含税金额 + */ + @ExcelProperty(value = "变更不含税金额") + private BigDecimal changeTaxExclAmount; + + /** + * 变更含税金额 + */ + @ExcelProperty(value = "变更含税金额") + private BigDecimal changeTaxInclAmount; + + /** + * 核准人 + */ + @ExcelProperty(value = "核准人") + private String approver; + + /** + * 项目责任人 + */ + @ExcelProperty(value = "项目责任人") + private String projectLeader; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 单据引用 + */ + @ExcelProperty(value = "单据引用") + private String documentReference; + + /** + * 文件ID + */ + @ExcelProperty(value = "文件ID") + private String fileId; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/mapper/XzdCbysSscbMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/mapper/XzdCbysSscbMapper.java new file mode 100644 index 00000000..16c30727 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/mapper/XzdCbysSscbMapper.java @@ -0,0 +1,15 @@ +package org.dromara.xzd.costProjectApproval.costBudget.mapper; + +import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysSscb; +import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysSscbVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 税收项明细Mapper接口 + * + * @author Lion Li + * @date 2025-10-17 + */ +public interface XzdCbysSscbMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/mapper/XzdCbysZjhcbMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/mapper/XzdCbysZjhcbMapper.java new file mode 100644 index 00000000..242fbaa1 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/mapper/XzdCbysZjhcbMapper.java @@ -0,0 +1,15 @@ +package org.dromara.xzd.costProjectApproval.costBudget.mapper; + +import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcb; +import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 立项及成本-成本预算-总体计划成本Mapper接口 + * + * @author Lion Li + * @date 2025-10-17 + */ +public interface XzdCbysZjhcbMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/mapper/XzdCbysZtjhcbBgjlMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/mapper/XzdCbysZtjhcbBgjlMapper.java new file mode 100644 index 00000000..54a44611 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/mapper/XzdCbysZtjhcbBgjlMapper.java @@ -0,0 +1,15 @@ +package org.dromara.xzd.costProjectApproval.costBudget.mapper; + +import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZtjhcbBgjl; +import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZtjhcbBgjlVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 立项及成本-成本预算-变更记录Mapper接口 + * + * @author Lion Li + * @date 2025-10-17 + */ +public interface XzdCbysZtjhcbBgjlMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/IXzdCbysSscbService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/IXzdCbysSscbService.java new file mode 100644 index 00000000..269edf2d --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/IXzdCbysSscbService.java @@ -0,0 +1,70 @@ +package org.dromara.xzd.costProjectApproval.costBudget.service; + +import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysSscbVo; +import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysSscbBo; +import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysSscb; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Collection; +import java.util.List; + +/** + * 税收项明细Service接口 + * + * @author Lion Li + * @date 2025-10-17 + */ +public interface IXzdCbysSscbService extends IService{ + + /** + * 查询税收项明细 + * + * @param id 主键 + * @return 税收项明细 + */ + XzdCbysSscbVo queryById(Long id); + + /** + * 分页查询税收项明细列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 税收项明细分页列表 + */ + TableDataInfo queryPageList(XzdCbysSscbBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的税收项明细列表 + * + * @param bo 查询条件 + * @return 税收项明细列表 + */ + List queryList(XzdCbysSscbBo bo); + + /** + * 新增税收项明细 + * + * @param bo 税收项明细 + * @return 是否新增成功 + */ + Boolean insertByBo(XzdCbysSscbBo bo); + + /** + * 修改税收项明细 + * + * @param bo 税收项明细 + * @return 是否修改成功 + */ + Boolean updateByBo(XzdCbysSscbBo bo); + + /** + * 校验并批量删除税收项明细信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/IXzdCbysZjhcbService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/IXzdCbysZjhcbService.java new file mode 100644 index 00000000..73cd3110 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/IXzdCbysZjhcbService.java @@ -0,0 +1,70 @@ +package org.dromara.xzd.costProjectApproval.costBudget.service; + +import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbVo; +import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZjhcbBo; +import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcb; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Collection; +import java.util.List; + +/** + * 立项及成本-成本预算-总体计划成本Service接口 + * + * @author Lion Li + * @date 2025-10-17 + */ +public interface IXzdCbysZjhcbService extends IService{ + + /** + * 查询立项及成本-成本预算-总体计划成本 + * + * @param id 主键 + * @return 立项及成本-成本预算-总体计划成本 + */ + XzdCbysZjhcbVo queryById(Long id); + + /** + * 分页查询立项及成本-成本预算-总体计划成本列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 立项及成本-成本预算-总体计划成本分页列表 + */ + TableDataInfo queryPageList(XzdCbysZjhcbBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的立项及成本-成本预算-总体计划成本列表 + * + * @param bo 查询条件 + * @return 立项及成本-成本预算-总体计划成本列表 + */ + List queryList(XzdCbysZjhcbBo bo); + + /** + * 新增立项及成本-成本预算-总体计划成本 + * + * @param bo 立项及成本-成本预算-总体计划成本 + * @return 是否新增成功 + */ + Boolean insertByBo(XzdCbysZjhcbBo bo); + + /** + * 修改立项及成本-成本预算-总体计划成本 + * + * @param bo 立项及成本-成本预算-总体计划成本 + * @return 是否修改成功 + */ + Boolean updateByBo(XzdCbysZjhcbBo bo); + + /** + * 校验并批量删除立项及成本-成本预算-总体计划成本信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/IXzdCbysZtjhcbBgjlService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/IXzdCbysZtjhcbBgjlService.java new file mode 100644 index 00000000..a405cb5c --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/IXzdCbysZtjhcbBgjlService.java @@ -0,0 +1,70 @@ +package org.dromara.xzd.costProjectApproval.costBudget.service; + +import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZtjhcbBgjlVo; +import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZtjhcbBgjlBo; +import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZtjhcbBgjl; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Collection; +import java.util.List; + +/** + * 立项及成本-成本预算-变更记录Service接口 + * + * @author Lion Li + * @date 2025-10-17 + */ +public interface IXzdCbysZtjhcbBgjlService extends IService{ + + /** + * 查询立项及成本-成本预算-变更记录 + * + * @param id 主键 + * @return 立项及成本-成本预算-变更记录 + */ + XzdCbysZtjhcbBgjlVo queryById(Long id); + + /** + * 分页查询立项及成本-成本预算-变更记录列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 立项及成本-成本预算-变更记录分页列表 + */ + TableDataInfo queryPageList(XzdCbysZtjhcbBgjlBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的立项及成本-成本预算-变更记录列表 + * + * @param bo 查询条件 + * @return 立项及成本-成本预算-变更记录列表 + */ + List queryList(XzdCbysZtjhcbBgjlBo bo); + + /** + * 新增立项及成本-成本预算-变更记录 + * + * @param bo 立项及成本-成本预算-变更记录 + * @return 是否新增成功 + */ + Boolean insertByBo(XzdCbysZtjhcbBgjlBo bo); + + /** + * 修改立项及成本-成本预算-变更记录 + * + * @param bo 立项及成本-成本预算-变更记录 + * @return 是否修改成功 + */ + Boolean updateByBo(XzdCbysZtjhcbBgjlBo bo); + + /** + * 校验并批量删除立项及成本-成本预算-变更记录信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/impl/XzdCbysSscbServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/impl/XzdCbysSscbServiceImpl.java new file mode 100644 index 00000000..5f456c61 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/impl/XzdCbysSscbServiceImpl.java @@ -0,0 +1,139 @@ +package org.dromara.xzd.costProjectApproval.costBudget.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.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 org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysSscbBo; +import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysSscbVo; +import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysSscb; +import org.dromara.xzd.costProjectApproval.costBudget.mapper.XzdCbysSscbMapper; +import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysSscbService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 税收项明细Service业务层处理 + * + * @author Lion Li + * @date 2025-10-17 + */ +@RequiredArgsConstructor +@Service +public class XzdCbysSscbServiceImpl extends ServiceImpl implements IXzdCbysSscbService { + + private final XzdCbysSscbMapper baseMapper; + + /** + * 查询税收项明细 + * + * @param id 主键 + * @return 税收项明细 + */ + @Override + public XzdCbysSscbVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询税收项明细列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 税收项明细分页列表 + */ + @Override + public TableDataInfo queryPageList(XzdCbysSscbBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的税收项明细列表 + * + * @param bo 查询条件 + * @return 税收项明细列表 + */ + @Override + public List queryList(XzdCbysSscbBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(XzdCbysSscbBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(XzdCbysSscb::getId); + lqw.eq(bo.getMainDocumentId() != null, XzdCbysSscb::getMainDocumentId, bo.getMainDocumentId()); + lqw.eq(StringUtils.isNotBlank(bo.getTaxItem()), XzdCbysSscb::getTaxItem, bo.getTaxItem()); + lqw.eq(bo.getTaxableAmount() != null, XzdCbysSscb::getTaxableAmount, bo.getTaxableAmount()); + lqw.eq(bo.getTaxRate() != null, XzdCbysSscb::getTaxRate, bo.getTaxRate()); + lqw.eq(bo.getTaxPayable() != null, XzdCbysSscb::getTaxPayable, bo.getTaxPayable()); + lqw.eq(bo.getTaxDeductible() != null, XzdCbysSscb::getTaxDeductible, bo.getTaxDeductible()); + lqw.eq(bo.getTaxDue() != null, XzdCbysSscb::getTaxDue, bo.getTaxDue()); + lqw.eq(StringUtils.isNotBlank(bo.getDocumentReference()), XzdCbysSscb::getDocumentReference, bo.getDocumentReference()); + lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdCbysSscb::getFileId, bo.getFileId()); + return lqw; + } + + /** + * 新增税收项明细 + * + * @param bo 税收项明细 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(XzdCbysSscbBo bo) { + XzdCbysSscb add = MapstructUtils.convert(bo, XzdCbysSscb.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改税收项明细 + * + * @param bo 税收项明细 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(XzdCbysSscbBo bo) { + XzdCbysSscb update = MapstructUtils.convert(bo, XzdCbysSscb.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(XzdCbysSscb entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除税收项明细信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/impl/XzdCbysZjhcbServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/impl/XzdCbysZjhcbServiceImpl.java new file mode 100644 index 00000000..8ca9019e --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/impl/XzdCbysZjhcbServiceImpl.java @@ -0,0 +1,277 @@ +package org.dromara.xzd.costProjectApproval.costBudget.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.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.dromara.system.service.ISysUserService; +import org.dromara.system.service.impl.SysOssServiceImpl; +import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysSscb; +import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysWgcbtbFubiao; +import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZtjhcbBgjl; +import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysSscbService; +import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysWgcbtbFubiaoService; +import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysZtjhcbBgjlService; +import org.dromara.xzd.service.impl.XzdProjectServiceImpl; +import org.dromara.xzd.settlement.domain.XzdJsDeductionItems; +import org.dromara.xzd.settlement.domain.vo.XzdJsCgJungonVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZjhcbBo; +import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbVo; +import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcb; +import org.dromara.xzd.costProjectApproval.costBudget.mapper.XzdCbysZjhcbMapper; +import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysZjhcbService; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; + +/** + * 立项及成本-成本预算-总体计划成本Service业务层处理 + * + * @author Lion Li + * @date 2025-10-17 + */ +@RequiredArgsConstructor +@Service +public class XzdCbysZjhcbServiceImpl extends ServiceImpl implements IXzdCbysZjhcbService { + + private final XzdCbysZjhcbMapper baseMapper; + + @Autowired + private IXzdCbysZtjhcbBgjlService xzdCbysZtjhcbBgjlService; + @Autowired + private IXzdCbysSscbService xzdCbysSscbService; + @Autowired + private IXzdCbysWgcbtbFubiaoService fubiaoService; + @Autowired + private SysOssServiceImpl sysOssService; + @Autowired + private XzdProjectServiceImpl xzdProjectService; + @Autowired + private ISysUserService sysUserService; + + /** + * 查询立项及成本-成本预算-总体计划成本 + * + * @param id 主键 + * @return 立项及成本-成本预算-总体计划成本 + */ + @Override + public XzdCbysZjhcbVo queryById(Long id){ + XzdCbysZjhcbVo vo = baseMapper.selectVoById(id); + getName(vo); + getHttk(vo); + return vo; + } + + /** + * 分页查询立项及成本-成本预算-总体计划成本列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 立项及成本-成本预算-总体计划成本分页列表 + */ + @Override + public TableDataInfo queryPageList(XzdCbysZjhcbBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + result.getRecords().forEach(this::getName); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的立项及成本-成本预算-总体计划成本列表 + * + * @param bo 查询条件 + * @return 立项及成本-成本预算-总体计划成本列表 + */ + @Override + public List queryList(XzdCbysZjhcbBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + List vos = baseMapper.selectVoList(lqw); + vos.forEach(this::getName); + return vos; + } + + private LambdaQueryWrapper buildQueryWrapper(XzdCbysZjhcbBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(XzdCbysZjhcb::getId); + lqw.eq(StringUtils.isNotBlank(bo.getDocCode()), XzdCbysZjhcb::getDocCode, bo.getDocCode()); + lqw.eq(StringUtils.isNotBlank(bo.getDocTitle()), XzdCbysZjhcb::getDocTitle, bo.getDocTitle()); + lqw.eq(bo.getDocDate() != null, XzdCbysZjhcb::getDocDate, bo.getDocDate()); + lqw.eq(bo.getProjectId() != null, XzdCbysZjhcb::getProjectId, bo.getProjectId()); + lqw.eq(StringUtils.isNotBlank(bo.getBudgetCategory()), XzdCbysZjhcb::getBudgetCategory, bo.getBudgetCategory()); + lqw.eq(bo.getTotalTaxExclAmount() != null, XzdCbysZjhcb::getTotalTaxExclAmount, bo.getTotalTaxExclAmount()); + lqw.eq(bo.getTotalTaxAmount() != null, XzdCbysZjhcb::getTotalTaxAmount, bo.getTotalTaxAmount()); + lqw.eq(bo.getTotalTaxInclAmount() != null, XzdCbysZjhcb::getTotalTaxInclAmount, bo.getTotalTaxInclAmount()); + lqw.eq(bo.getProjectLeader() != null, XzdCbysZjhcb::getProjectLeader, bo.getProjectLeader()); + lqw.eq(bo.getExecProjectManager() != null, XzdCbysZjhcb::getExecProjectManager, bo.getExecProjectManager()); + lqw.eq(bo.getContractAmount() != null, XzdCbysZjhcb::getContractAmount, bo.getContractAmount()); + lqw.eq(bo.getTaxCost() != null, XzdCbysZjhcb::getTaxCost, bo.getTaxCost()); + lqw.eq(bo.getProfitRate() != null, XzdCbysZjhcb::getProfitRate, bo.getProfitRate()); + lqw.eq(bo.getProfitAmount() != null, XzdCbysZjhcb::getProfitAmount, bo.getProfitAmount()); + lqw.eq(bo.getEnableCostPrecontrol() != null, XzdCbysZjhcb::getEnableCostPrecontrol, bo.getEnableCostPrecontrol()); + lqw.eq(StringUtils.isNotBlank(bo.getCostControlMode()), XzdCbysZjhcb::getCostControlMode, bo.getCostControlMode()); + lqw.eq(StringUtils.isNotBlank(bo.getForeignCurrencyTaxType()), XzdCbysZjhcb::getForeignCurrencyTaxType, bo.getForeignCurrencyTaxType()); + lqw.eq(StringUtils.isNotBlank(bo.getForbidFlag()), XzdCbysZjhcb::getForbidFlag, bo.getForbidFlag()); + lqw.eq(bo.getEnableAccountAttrTab() != null, XzdCbysZjhcb::getEnableAccountAttrTab, bo.getEnableAccountAttrTab()); + lqw.eq(bo.getEnableMaterialGroup() != null, XzdCbysZjhcb::getEnableMaterialGroup, bo.getEnableMaterialGroup()); + lqw.eq(StringUtils.isNotBlank(bo.getDocumentReference()), XzdCbysZjhcb::getDocumentReference, bo.getDocumentReference()); + lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdCbysZjhcb::getFileId, bo.getFileId()); + return lqw; + } + + /** + * 新增立项及成本-成本预算-总体计划成本 + * + * @param bo 立项及成本-成本预算-总体计划成本 + * @return 是否新增成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean insertByBo(XzdCbysZjhcbBo bo) { + XzdCbysZjhcb add = MapstructUtils.convert(bo, XzdCbysZjhcb.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + if (bo.getXzdCbysSscb() == null || bo.getXzdCbysSscb().isEmpty()) { + throw new ServiceException("税收成本不能为空"); + } + if (bo.getXzdCbysZtjhcbBgjl() == null || bo.getXzdCbysZtjhcbBgjl().isEmpty()) { + throw new ServiceException("变更记录不能为空"); + } + if (bo.getXzdCbysWgcbtbFubiao() == null || bo.getXzdCbysWgcbtbFubiao().isEmpty()) { + throw new ServiceException("成本明细不能为空"); + } + bo.getXzdCbysSscb().forEach(item -> {item.setMainDocumentId(add.getId());}); + xzdCbysSscbService.saveBatch(bo.getXzdCbysSscb()); + bo.getXzdCbysZtjhcbBgjl().forEach(item -> {item.setMainDocumentId(add.getId());}); + xzdCbysZtjhcbBgjlService.saveBatch(bo.getXzdCbysZtjhcbBgjl()); + bo.getXzdCbysWgcbtbFubiao().forEach(item -> {item.setMainDocId(add.getId());}); + fubiaoService.saveBatch(bo.getXzdCbysWgcbtbFubiao()); + return flag; + } + + /** + * 修改立项及成本-成本预算-总体计划成本 + * + * @param bo 立项及成本-成本预算-总体计划成本 + * @return 是否修改成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean updateByBo(XzdCbysZjhcbBo bo) { + XzdCbysZjhcb update = MapstructUtils.convert(bo, XzdCbysZjhcb.class); + validEntityBeforeSave(update); + if (bo.getXzdCbysSscb() == null || bo.getXzdCbysSscb().isEmpty()) { + throw new ServiceException("税收成本不能为空"); + } + if (bo.getXzdCbysZtjhcbBgjl() == null || bo.getXzdCbysZtjhcbBgjl().isEmpty()) { + throw new ServiceException("变更记录不能为空"); + } + if (bo.getXzdCbysWgcbtbFubiao() == null || bo.getXzdCbysWgcbtbFubiao().isEmpty()) { + throw new ServiceException("成本明细不能为空"); + } + xzdCbysZtjhcbBgjlService.remove(new LambdaQueryWrapper().eq(XzdCbysZtjhcbBgjl::getMainDocumentId, bo.getId())); + xzdCbysSscbService.remove(new LambdaQueryWrapper().eq(XzdCbysSscb::getMainDocumentId, bo.getId())); + fubiaoService.remove(new LambdaQueryWrapper().eq(XzdCbysWgcbtbFubiao::getMainDocId, bo.getId())); + bo.getXzdCbysSscb().forEach(item -> {item.setMainDocumentId(bo.getId());}); + xzdCbysSscbService.saveBatch(bo.getXzdCbysSscb()); + bo.getXzdCbysZtjhcbBgjl().forEach(item -> {item.setMainDocumentId(bo.getId());}); + xzdCbysZtjhcbBgjlService.saveBatch(bo.getXzdCbysZtjhcbBgjl()); + bo.getXzdCbysWgcbtbFubiao().forEach(item -> {item.setMainDocId(bo.getId());}); + fubiaoService.saveBatch(bo.getXzdCbysWgcbtbFubiao()); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(XzdCbysZjhcb entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除立项及成本-成本预算-总体计划成本信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + List deleteIds = new ArrayList<>(); + for (Long id : ids) { + XzdCbysZjhcbVo vo = baseMapper.selectVoById(id); + if (vo != null){ + //删除附件 + if (vo.getFileId()!= null && !vo.getFileId().isEmpty()){ + List list = Arrays.stream(vo.getFileId().split(",")).map(Long::valueOf).toList(); + deleteIds.addAll(list); + } + } + } + if (!deleteIds.isEmpty()) { + sysOssService.deleteWithValidByIds(deleteIds, false); + } + xzdCbysZtjhcbBgjlService.remove(new LambdaQueryWrapper().in(XzdCbysZtjhcbBgjl::getMainDocumentId, ids)); + xzdCbysSscbService.remove(new LambdaQueryWrapper().in(XzdCbysSscb::getMainDocumentId, ids)); + fubiaoService.remove(new LambdaQueryWrapper().in(XzdCbysWgcbtbFubiao::getMainDocId, ids)); + return baseMapper.deleteByIds(ids) > 0; + } + + + /** + * 获取部分字段名称 + * @param item + */ + private void getName(XzdCbysZjhcbVo item) { + //项目名称 + if (item.getProjectId() != null){ + String projectName = xzdProjectService.queryNameById(item.getProjectId()); + if (projectName != null){ + item.setProjectName(projectName); + } + } + if (item.getProjectLeader() != null){ + String name = sysUserService.queryNameById(item.getProjectLeader()); + if (name != null){ + item.setProjectLeaderName(name); + } + } + if (item.getExecProjectManager() != null){ + String name = sysUserService.queryNameById(item.getExecProjectManager()); + if (name != null){ + item.setExecProjectManagerName(name); + } + } + + } + + /** + * 获取扣款与奖励项 + * @param vo + */ + private void getHttk(XzdCbysZjhcbVo vo) { + List xzdCbysZtjhcbBgjls = xzdCbysZtjhcbBgjlService.getBaseMapper().selectList(new LambdaQueryWrapper().eq(XzdCbysZtjhcbBgjl::getMainDocumentId, vo.getId())); + vo.setXzdCbysZtjhcbBgjl(xzdCbysZtjhcbBgjls); + List xzdCbysSscbs = xzdCbysSscbService.getBaseMapper().selectList(new LambdaQueryWrapper().eq(XzdCbysSscb::getMainDocumentId, vo.getId())); + vo.setXzdCbysSscb(xzdCbysSscbs); + List xzdCbysWgcbtbFubiaos = fubiaoService.getBaseMapper().selectList(new LambdaQueryWrapper().eq(XzdCbysWgcbtbFubiao::getMainDocId, vo.getId())); + vo.setXzdCbysWgcbtbFubiao(xzdCbysWgcbtbFubiaos); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/impl/XzdCbysZtjhcbBgjlServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/impl/XzdCbysZtjhcbBgjlServiceImpl.java new file mode 100644 index 00000000..fda23d32 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/costProjectApproval/costBudget/service/impl/XzdCbysZtjhcbBgjlServiceImpl.java @@ -0,0 +1,141 @@ +package org.dromara.xzd.costProjectApproval.costBudget.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.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 org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZtjhcbBgjlBo; +import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZtjhcbBgjlVo; +import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZtjhcbBgjl; +import org.dromara.xzd.costProjectApproval.costBudget.mapper.XzdCbysZtjhcbBgjlMapper; +import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysZtjhcbBgjlService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 立项及成本-成本预算-变更记录Service业务层处理 + * + * @author Lion Li + * @date 2025-10-17 + */ +@RequiredArgsConstructor +@Service +public class XzdCbysZtjhcbBgjlServiceImpl extends ServiceImpl implements IXzdCbysZtjhcbBgjlService { + + private final XzdCbysZtjhcbBgjlMapper baseMapper; + + /** + * 查询立项及成本-成本预算-变更记录 + * + * @param id 主键 + * @return 立项及成本-成本预算-变更记录 + */ + @Override + public XzdCbysZtjhcbBgjlVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询立项及成本-成本预算-变更记录列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 立项及成本-成本预算-变更记录分页列表 + */ + @Override + public TableDataInfo queryPageList(XzdCbysZtjhcbBgjlBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的立项及成本-成本预算-变更记录列表 + * + * @param bo 查询条件 + * @return 立项及成本-成本预算-变更记录列表 + */ + @Override + public List queryList(XzdCbysZtjhcbBgjlBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(XzdCbysZtjhcbBgjlBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(XzdCbysZtjhcbBgjl::getId); + lqw.eq(StringUtils.isNotBlank(bo.getDocCode()), XzdCbysZtjhcbBgjl::getDocCode, bo.getDocCode()); + lqw.eq(StringUtils.isNotBlank(bo.getDocTitle()), XzdCbysZtjhcbBgjl::getDocTitle, bo.getDocTitle()); + lqw.eq(bo.getDocDate() != null, XzdCbysZtjhcbBgjl::getDocDate, bo.getDocDate()); + lqw.like(StringUtils.isNotBlank(bo.getProjectName()), XzdCbysZtjhcbBgjl::getProjectName, bo.getProjectName()); + lqw.eq(StringUtils.isNotBlank(bo.getChangeSource()), XzdCbysZtjhcbBgjl::getChangeSource, bo.getChangeSource()); + lqw.eq(bo.getChangeTaxExclAmount() != null, XzdCbysZtjhcbBgjl::getChangeTaxExclAmount, bo.getChangeTaxExclAmount()); + lqw.eq(bo.getChangeTaxInclAmount() != null, XzdCbysZtjhcbBgjl::getChangeTaxInclAmount, bo.getChangeTaxInclAmount()); + lqw.eq(StringUtils.isNotBlank(bo.getApprover()), XzdCbysZtjhcbBgjl::getApprover, bo.getApprover()); + lqw.eq(StringUtils.isNotBlank(bo.getProjectLeader()), XzdCbysZtjhcbBgjl::getProjectLeader, bo.getProjectLeader()); + lqw.eq(StringUtils.isNotBlank(bo.getDocumentReference()), XzdCbysZtjhcbBgjl::getDocumentReference, bo.getDocumentReference()); + lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdCbysZtjhcbBgjl::getFileId, bo.getFileId()); + return lqw; + } + + /** + * 新增立项及成本-成本预算-变更记录 + * + * @param bo 立项及成本-成本预算-变更记录 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(XzdCbysZtjhcbBgjlBo bo) { + XzdCbysZtjhcbBgjl add = MapstructUtils.convert(bo, XzdCbysZtjhcbBgjl.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改立项及成本-成本预算-变更记录 + * + * @param bo 立项及成本-成本预算-变更记录 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(XzdCbysZtjhcbBgjlBo bo) { + XzdCbysZtjhcbBgjl update = MapstructUtils.convert(bo, XzdCbysZtjhcbBgjl.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(XzdCbysZtjhcbBgjl entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除立项及成本-成本预算-变更记录信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/xzd/costProjectApproval/costBudget/XzdCbysSscbMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/xzd/costProjectApproval/costBudget/XzdCbysSscbMapper.xml new file mode 100644 index 00000000..f4ea1cf2 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/xzd/costProjectApproval/costBudget/XzdCbysSscbMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/xzd/costProjectApproval/costBudget/XzdCbysZjhcbMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/xzd/costProjectApproval/costBudget/XzdCbysZjhcbMapper.xml new file mode 100644 index 00000000..b63efd12 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/xzd/costProjectApproval/costBudget/XzdCbysZjhcbMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/xzd/costProjectApproval/costBudget/XzdCbysZtjhcbBgjlMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/xzd/costProjectApproval/costBudget/XzdCbysZtjhcbBgjlMapper.xml new file mode 100644 index 00000000..a3f1f49d --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/xzd/costProjectApproval/costBudget/XzdCbysZtjhcbBgjlMapper.xml @@ -0,0 +1,7 @@ + + + + +