立项及成本-成本预算-阶段成本分解接口

This commit is contained in:
2025-10-17 20:10:36 +08:00
parent c318d0b10b
commit 2b4517760f
27 changed files with 2424 additions and 24 deletions

View File

@ -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.XzdCbysJdcbfjVo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysJdcbfjBo;
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysJdcbfjService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 立项及成本-成本预算-阶段成本分解
*
* @author Lion Li
* @date 2025-10-17
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/costBudget/cbysJdcbfj")
public class XzdCbysJdcbfjController extends BaseController {
private final IXzdCbysJdcbfjService xzdCbysJdcbfjService;
/**
* 查询立项及成本-成本预算-阶段成本分解列表
*/
@SaCheckPermission("costBudget:cbysJdcbfj:list")
@GetMapping("/list")
public TableDataInfo<XzdCbysJdcbfjVo> list(XzdCbysJdcbfjBo bo, PageQuery pageQuery) {
return xzdCbysJdcbfjService.queryPageList(bo, pageQuery);
}
/**
* 导出立项及成本-成本预算-阶段成本分解列表
*/
@SaCheckPermission("costBudget:cbysJdcbfj:export")
@Log(title = "立项及成本-成本预算-阶段成本分解", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(XzdCbysJdcbfjBo bo, HttpServletResponse response) {
List<XzdCbysJdcbfjVo> list = xzdCbysJdcbfjService.queryList(bo);
ExcelUtil.exportExcel(list, "立项及成本-成本预算-阶段成本分解", XzdCbysJdcbfjVo.class, response);
}
/**
* 获取立项及成本-成本预算-阶段成本分解详细信息
*
* @param id 主键
*/
@SaCheckPermission("costBudget:cbysJdcbfj:query")
@GetMapping("/{id}")
public R<XzdCbysJdcbfjVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdCbysJdcbfjService.queryById(id));
}
/**
* 新增立项及成本-成本预算-阶段成本分解
*/
@SaCheckPermission("costBudget:cbysJdcbfj:add")
@Log(title = "立项及成本-成本预算-阶段成本分解", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdCbysJdcbfjBo bo) {
return toAjax(xzdCbysJdcbfjService.insertByBo(bo));
}
/**
* 修改立项及成本-成本预算-阶段成本分解
*/
@SaCheckPermission("costBudget:cbysJdcbfj:edit")
@Log(title = "立项及成本-成本预算-阶段成本分解", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdCbysJdcbfjBo bo) {
return toAjax(xzdCbysJdcbfjService.updateByBo(bo));
}
/**
* 删除立项及成本-成本预算-阶段成本分解
*
* @param ids 主键串
*/
@SaCheckPermission("costBudget:cbysJdcbfj:remove")
@Log(title = "立项及成本-成本预算-阶段成本分解", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(xzdCbysJdcbfjService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -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.XzdCbysJdcbfjFubiaoVo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysJdcbfjFubiaoBo;
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysJdcbfjFubiaoService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 立项及成本-成本预算-阶段成本分解附
*
* @author Lion Li
* @date 2025-10-17
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/costBudget/cbysJdcbfjFubiao")
public class XzdCbysJdcbfjFubiaoController extends BaseController {
private final IXzdCbysJdcbfjFubiaoService xzdCbysJdcbfjFubiaoService;
/**
* 查询立项及成本-成本预算-阶段成本分解附列表
*/
@SaCheckPermission("costBudget:cbysJdcbfjFubiao:list")
@GetMapping("/list")
public TableDataInfo<XzdCbysJdcbfjFubiaoVo> list(XzdCbysJdcbfjFubiaoBo bo, PageQuery pageQuery) {
return xzdCbysJdcbfjFubiaoService.queryPageList(bo, pageQuery);
}
/**
* 导出立项及成本-成本预算-阶段成本分解附列表
*/
@SaCheckPermission("costBudget:cbysJdcbfjFubiao:export")
@Log(title = "立项及成本-成本预算-阶段成本分解附", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(XzdCbysJdcbfjFubiaoBo bo, HttpServletResponse response) {
List<XzdCbysJdcbfjFubiaoVo> list = xzdCbysJdcbfjFubiaoService.queryList(bo);
ExcelUtil.exportExcel(list, "立项及成本-成本预算-阶段成本分解附", XzdCbysJdcbfjFubiaoVo.class, response);
}
/**
* 获取立项及成本-成本预算-阶段成本分解附详细信息
*
* @param id 主键
*/
@SaCheckPermission("costBudget:cbysJdcbfjFubiao:query")
@GetMapping("/{id}")
public R<XzdCbysJdcbfjFubiaoVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdCbysJdcbfjFubiaoService.queryById(id));
}
/**
* 新增立项及成本-成本预算-阶段成本分解附
*/
@SaCheckPermission("costBudget:cbysJdcbfjFubiao:add")
@Log(title = "立项及成本-成本预算-阶段成本分解附", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdCbysJdcbfjFubiaoBo bo) {
return toAjax(xzdCbysJdcbfjFubiaoService.insertByBo(bo));
}
/**
* 修改立项及成本-成本预算-阶段成本分解附
*/
@SaCheckPermission("costBudget:cbysJdcbfjFubiao:edit")
@Log(title = "立项及成本-成本预算-阶段成本分解附", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdCbysJdcbfjFubiaoBo bo) {
return toAjax(xzdCbysJdcbfjFubiaoService.updateByBo(bo));
}
/**
* 删除立项及成本-成本预算-阶段成本分解附
*
* @param ids 主键串
*/
@SaCheckPermission("costBudget:cbysJdcbfjFubiao:remove")
@Log(title = "立项及成本-成本预算-阶段成本分解附", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(xzdCbysJdcbfjFubiaoService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,108 @@
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_jdcbfj
*
* @author Lion Li
* @date 2025-10-17
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_cbys_jdcbfj")
public class XzdCbysJdcbfj 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 Long totalPlanCost;
/**
* 项目责任人
*/
private Long projectLeader;
/**
* 开工日期
*/
private LocalDate startDate;
/**
* 竣工日期
*/
private LocalDate completionDate;
/**
* 年度
*/
private Long year;
/**
* 币种
*/
private String currency;
/**
* 汇率
*/
private BigDecimal exchangeRate;
/**
* 备注
*/
private String remark;
/**
* 单据引用
*/
private String documentReference;
/**
* 文件ID
*/
private String fileId;
}

View File

@ -0,0 +1,122 @@
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_jdcbfj_fubiao
*
* @author Lion Li
* @date 2025-10-17
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_cbys_jdcbfj_fubiao")
public class XzdCbysJdcbfjFubiao extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 主表id
*/
private Long mainTableId;
/**
* 预算项编码
*/
private String budgetItemCode;
/**
* 预算项名称
*/
private String budgetItemName;
/**
* BOQ编码
*/
private String boq;
/**
* WBS编码
*/
private String wbs;
/**
* CBS编码
*/
private String cbs;
/**
* 单位
*/
private String unit;
/**
* 数量
*/
private BigDecimal quantity;
/**
* 单价
*/
private BigDecimal unitPrice;
/**
* 金额
*/
private BigDecimal amount;
/**
* 变更数量
*/
private BigDecimal changeQuantity;
/**
* 变更金额
*/
private BigDecimal changeAmount;
/**
* 变更后数量
*/
private BigDecimal afterChangeQuantity;
/**
* 变更后单价
*/
private BigDecimal afterChangeUnitPrice;
/**
* 变更后金额
*/
private BigDecimal afterChangeAmount;
/**
* 备注
*/
private String remark;
/**
* 单据引用
*/
private String documentReference;
/**
* 文件ID
*/
private String fileId;
}

View File

@ -0,0 +1,182 @@
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_zjhcb_fubiao
*
* @author Lion Li
* @date 2025-10-17
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_cbys_zjhcb_fubiao")
public class XzdCbysZjhcbFubiao extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 关联主单据的ID外键指向对应主表如预算/付款单据表等)
*/
private Long mainDocumentId;
/**
* 预算项编码budgetCode
*/
private String budgetCode;
/**
* 预算项名称budgetName
*/
private String budgetName;
/**
* WBS编码wbs
*/
private String wbs;
/**
* CBS编码cbs
*/
private String cbs;
/**
* 单位unit
*/
private String unit;
/**
* 数量quantity
*/
private BigDecimal quantity;
/**
* 单价unitPrice
*/
private BigDecimal unitPrice;
/**
* 含税单价taxIncludedUnitPrice
*/
private BigDecimal taxIncludedUnitPrice;
/**
* 税率taxRate如13%表示为0.1300
*/
private BigDecimal taxRate;
/**
* 税额taxAmount
*/
private BigDecimal taxAmount;
/**
* 不含税金额taxExcludedAmount
*/
private BigDecimal taxExcludedAmount;
/**
* 含税金额taxIncludedAmount
*/
private BigDecimal taxIncludedAmount;
/**
* 变更数量changeQuantity
*/
private BigDecimal changeQuantity;
/**
* 变更单价changeUnitPrice
*/
private BigDecimal changeUnitPrice;
/**
* 变更后含税单价changeTaxIncludedUnitPrice
*/
private BigDecimal changeTaxIncludedUnitPrice;
/**
* 变更税率changeTaxRate
*/
private BigDecimal changeTaxRate;
/**
* 变更税额changeTaxAmount
*/
private BigDecimal changeTaxAmount;
/**
* 变更后数量afterChangeQuantity
*/
private BigDecimal afterChangeQuantity;
/**
* 变更后单价afterChangeUnitPrice
*/
private BigDecimal afterChangeUnitPrice;
/**
* 变更后含税单价afterChangeTaxIncludedUnitPrice
*/
private BigDecimal afterChangeTaxIncludedUnitPrice;
/**
* 变更后税率afterChangeTaxRate
*/
private BigDecimal afterChangeTaxRate;
/**
* 变更后税额afterChangeTaxAmount
*/
private BigDecimal afterChangeTaxAmount;
/**
* 变更后不含税金额afterChangeTaxExcludedAmount
*/
private BigDecimal afterChangeTaxExcludedAmount;
/**
* 变更后含税金额afterChangeTaxIncludedAmount
*/
private BigDecimal afterChangeTaxIncludedAmount;
/**
* 备注remarks
*/
private String remarks;
/**
* 合同模式contractMode
*/
private String contractMode;
/**
* 中标预算收入bidBudgetIncome
*/
private BigDecimal bidBudgetIncome;
/**
* 利润率profitRate如20%表示为20.00
*/
private BigDecimal profitRate;
/**
* 附件attachment存储附件路径或关联ID
*/
private String attachment;
}

View File

@ -0,0 +1,118 @@
package org.dromara.xzd.costProjectApproval.costBudget.domain.bo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfj;
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.XzdCbysJdcbfjFubiao;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
/**
* 立项及成本-成本预算-阶段成本分解业务对象 xzd_cbys_jdcbfj
*
* @author Lion Li
* @date 2025-10-17
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdCbysJdcbfj.class, reverseConvertGenerate = false)
public class XzdCbysJdcbfjBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 单据编码(带*,必填)
*/
@NotBlank(message = "单据编码(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private String docCode;
/**
* 单据标题(带*,必填)
*/
@NotBlank(message = "单据标题(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private String docTitle;
/**
* 单据日期
*/
private LocalDate docDate;
/**
* 工程项目
*/
private Long projectId;
/**
* 预算分类
*/
private String budgetCategory;
/**
* 总体计划成本(带*,必填)
*/
@NotNull(message = "总体计划成本(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long totalPlanCost;
/**
* 项目责任人
*/
private Long projectLeader;
/**
* 开工日期
*/
private LocalDate startDate;
/**
* 竣工日期
*/
private LocalDate completionDate;
/**
* 年度
*/
private Long year;
/**
* 币种
*/
private String currency;
/**
* 汇率
*/
private BigDecimal exchangeRate;
/**
* 备注
*/
private String remark;
/**
* 单据引用
*/
private String documentReference;
/**
* 文件ID
*/
private String fileId;
/**
* 副表数据
*/
List<XzdCbysJdcbfjFubiao> xzdCbysJdcbfjFubiao;
}

View File

@ -0,0 +1,121 @@
package org.dromara.xzd.costProjectApproval.costBudget.domain.bo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfjFubiao;
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_jdcbfj_fubiao
*
* @author Lion Li
* @date 2025-10-17
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdCbysJdcbfjFubiao.class, reverseConvertGenerate = false)
public class XzdCbysJdcbfjFubiaoBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 主表id
*/
private Long mainTableId;
/**
* 预算项编码
*/
private String budgetItemCode;
/**
* 预算项名称
*/
private String budgetItemName;
/**
* BOQ编码
*/
private String boq;
/**
* WBS编码
*/
private String wbs;
/**
* CBS编码
*/
private String cbs;
/**
* 单位
*/
private String unit;
/**
* 数量
*/
private BigDecimal quantity;
/**
* 单价
*/
private BigDecimal unitPrice;
/**
* 金额
*/
private BigDecimal amount;
/**
* 变更数量
*/
private BigDecimal changeQuantity;
/**
* 变更金额
*/
private BigDecimal changeAmount;
/**
* 变更后数量
*/
private BigDecimal afterChangeQuantity;
/**
* 变更后单价
*/
private BigDecimal afterChangeUnitPrice;
/**
* 变更后金额
*/
private BigDecimal afterChangeAmount;
/**
* 备注
*/
private String remark;
/**
* 单据引用
*/
private String documentReference;
/**
* 文件ID
*/
private String fileId;
}

View File

@ -1,8 +1,6 @@
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.xzd.costProjectApproval.costBudget.domain.*;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
@ -10,7 +8,6 @@ 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;
@ -161,7 +158,7 @@ public class XzdCbysZjhcbBo extends BaseEntity {
/**
* 成本明细
*/
List<XzdCbysWgcbtbFubiao> xzdCbysWgcbtbFubiao;
List<XzdCbysZjhcbFubiao> xzdCbysWgcbtbFubiao;
/**
* 税收成本

View File

@ -0,0 +1,183 @@
package org.dromara.xzd.costProjectApproval.costBudget.domain.bo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcbFubiao;
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_zjhcb_fubiao
*
* @author Lion Li
* @date 2025-10-17
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdCbysZjhcbFubiao.class, reverseConvertGenerate = false)
public class XzdCbysZjhcbFubiaoBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 关联主单据的ID外键指向对应主表如预算/付款单据表等)
*/
private Long mainDocumentId;
/**
* 预算项编码budgetCode
*/
@NotBlank(message = "预算项编码budgetCode不能为空", groups = { AddGroup.class, EditGroup.class })
private String budgetCode;
/**
* 预算项名称budgetName
*/
@NotBlank(message = "预算项名称budgetName不能为空", groups = { AddGroup.class, EditGroup.class })
private String budgetName;
/**
* WBS编码wbs
*/
private String wbs;
/**
* CBS编码cbs
*/
private String cbs;
/**
* 单位unit
*/
private String unit;
/**
* 数量quantity
*/
private BigDecimal quantity;
/**
* 单价unitPrice
*/
private BigDecimal unitPrice;
/**
* 含税单价taxIncludedUnitPrice
*/
private BigDecimal taxIncludedUnitPrice;
/**
* 税率taxRate如13%表示为0.1300
*/
private BigDecimal taxRate;
/**
* 税额taxAmount
*/
private BigDecimal taxAmount;
/**
* 不含税金额taxExcludedAmount
*/
private BigDecimal taxExcludedAmount;
/**
* 含税金额taxIncludedAmount
*/
private BigDecimal taxIncludedAmount;
/**
* 变更数量changeQuantity
*/
private BigDecimal changeQuantity;
/**
* 变更单价changeUnitPrice
*/
private BigDecimal changeUnitPrice;
/**
* 变更后含税单价changeTaxIncludedUnitPrice
*/
private BigDecimal changeTaxIncludedUnitPrice;
/**
* 变更税率changeTaxRate
*/
private BigDecimal changeTaxRate;
/**
* 变更税额changeTaxAmount
*/
private BigDecimal changeTaxAmount;
/**
* 变更后数量afterChangeQuantity
*/
private BigDecimal afterChangeQuantity;
/**
* 变更后单价afterChangeUnitPrice
*/
private BigDecimal afterChangeUnitPrice;
/**
* 变更后含税单价afterChangeTaxIncludedUnitPrice
*/
private BigDecimal afterChangeTaxIncludedUnitPrice;
/**
* 变更后税率afterChangeTaxRate
*/
private BigDecimal afterChangeTaxRate;
/**
* 变更后税额afterChangeTaxAmount
*/
private BigDecimal afterChangeTaxAmount;
/**
* 变更后不含税金额afterChangeTaxExcludedAmount
*/
private BigDecimal afterChangeTaxExcludedAmount;
/**
* 变更后含税金额afterChangeTaxIncludedAmount
*/
private BigDecimal afterChangeTaxIncludedAmount;
/**
* 备注remarks
*/
private String remarks;
/**
* 合同模式contractMode
*/
private String contractMode;
/**
* 中标预算收入bidBudgetIncome
*/
private BigDecimal bidBudgetIncome;
/**
* 利润率profitRate如20%表示为20.00
*/
private BigDecimal profitRate;
/**
* 附件attachment存储附件路径或关联ID
*/
private String attachment;
}

View File

@ -0,0 +1,147 @@
package org.dromara.xzd.costProjectApproval.costBudget.domain.vo;
import java.math.BigDecimal;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfjFubiao;
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_jdcbfj_fubiao
*
* @author Lion Li
* @date 2025-10-17
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdCbysJdcbfjFubiao.class)
public class XzdCbysJdcbfjFubiaoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 主表id
*/
@ExcelProperty(value = "主表id")
private Long mainTableId;
/**
* 预算项编码
*/
@ExcelProperty(value = "预算项编码")
private String budgetItemCode;
/**
* 预算项名称
*/
@ExcelProperty(value = "预算项名称")
private String budgetItemName;
/**
* BOQ编码
*/
@ExcelProperty(value = "BOQ编码")
private String boq;
/**
* WBS编码
*/
@ExcelProperty(value = "WBS编码")
private String wbs;
/**
* CBS编码
*/
@ExcelProperty(value = "CBS编码")
private String cbs;
/**
* 单位
*/
@ExcelProperty(value = "单位")
private String unit;
/**
* 数量
*/
@ExcelProperty(value = "数量")
private BigDecimal quantity;
/**
* 单价
*/
@ExcelProperty(value = "单价")
private BigDecimal unitPrice;
/**
* 金额
*/
@ExcelProperty(value = "金额")
private BigDecimal amount;
/**
* 变更数量
*/
@ExcelProperty(value = "变更数量")
private BigDecimal changeQuantity;
/**
* 变更金额
*/
@ExcelProperty(value = "变更金额")
private BigDecimal changeAmount;
/**
* 变更后数量
*/
@ExcelProperty(value = "变更后数量")
private BigDecimal afterChangeQuantity;
/**
* 变更后单价
*/
@ExcelProperty(value = "变更后单价")
private BigDecimal afterChangeUnitPrice;
/**
* 变更后金额
*/
@ExcelProperty(value = "变更后金额")
private BigDecimal afterChangeAmount;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 单据引用
*/
@ExcelProperty(value = "单据引用")
private String documentReference;
/**
* 文件ID
*/
@ExcelProperty(value = "文件ID")
private String fileId;
}

View File

@ -0,0 +1,142 @@
package org.dromara.xzd.costProjectApproval.costBudget.domain.vo;
import java.math.BigDecimal;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfj;
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.XzdCbysJdcbfjFubiao;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
/**
* 立项及成本-成本预算-阶段成本分解视图对象 xzd_cbys_jdcbfj
*
* @author Lion Li
* @date 2025-10-17
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdCbysJdcbfj.class)
public class XzdCbysJdcbfjVo 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 = "工程项目")
private Long projectId;
private String projectName;
/**
* 预算分类
*/
@ExcelProperty(value = "预算分类")
private String budgetCategory;
/**
* 总体计划成本(带*,必填)
*/
@ExcelProperty(value = "总体计划成本", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=*,必填")
private Long totalPlanCost;
private String totalPlanCostName;
/**
* 项目责任人
*/
@ExcelProperty(value = "项目责任人")
private Long projectLeader;
private String projectLeaderName;
/**
* 开工日期
*/
@ExcelProperty(value = "开工日期")
private LocalDate startDate;
/**
* 竣工日期
*/
@ExcelProperty(value = "竣工日期")
private LocalDate completionDate;
/**
* 年度
*/
@ExcelProperty(value = "年度")
private Long year;
/**
* 币种
*/
@ExcelProperty(value = "币种")
private String currency;
/**
* 汇率
*/
@ExcelProperty(value = "汇率")
private BigDecimal exchangeRate;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 单据引用
*/
@ExcelProperty(value = "单据引用")
private String documentReference;
/**
* 文件ID
*/
@ExcelProperty(value = "文件ID")
private String fileId;
/**
* 副表数据
*/
List<XzdCbysJdcbfjFubiao> xzdCbysJdcbfjFubiao;
}

View File

@ -0,0 +1,247 @@
package org.dromara.xzd.costProjectApproval.costBudget.domain.vo;
import java.math.BigDecimal;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcbFubiao;
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_zjhcb_fubiao
*
* @author Lion Li
* @date 2025-10-17
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdCbysZjhcbFubiao.class)
public class XzdCbysZjhcbFubiaoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 关联主单据的ID外键指向对应主表如预算/付款单据表等)
*/
private Long mainDocumentId;
/**
* 预算项编码budgetCode
*/
@ExcelProperty(value = "预算项编码", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "b=udgetCode")
private String budgetCode;
/**
* 预算项名称budgetName
*/
@ExcelProperty(value = "预算项名称", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "b=udgetName")
private String budgetName;
/**
* WBS编码wbs
*/
@ExcelProperty(value = "WBS编码", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "w=bs")
private String wbs;
/**
* CBS编码cbs
*/
@ExcelProperty(value = "CBS编码", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "c=bs")
private String cbs;
/**
* 单位unit
*/
@ExcelProperty(value = "单位", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "u=nit")
private String unit;
/**
* 数量quantity
*/
@ExcelProperty(value = "数量", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "q=uantity")
private BigDecimal quantity;
/**
* 单价unitPrice
*/
@ExcelProperty(value = "单价", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "u=nitPrice")
private BigDecimal unitPrice;
/**
* 含税单价taxIncludedUnitPrice
*/
@ExcelProperty(value = "含税单价", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "t=axIncludedUnitPrice")
private BigDecimal taxIncludedUnitPrice;
/**
* 税率taxRate如13%表示为0.1300
*/
@ExcelProperty(value = "税率", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "t=axRate如13%表示为0.1300")
private BigDecimal taxRate;
/**
* 税额taxAmount
*/
@ExcelProperty(value = "税额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "t=axAmount")
private BigDecimal taxAmount;
/**
* 不含税金额taxExcludedAmount
*/
@ExcelProperty(value = "不含税金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "t=axExcludedAmount")
private BigDecimal taxExcludedAmount;
/**
* 含税金额taxIncludedAmount
*/
@ExcelProperty(value = "含税金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "t=axIncludedAmount")
private BigDecimal taxIncludedAmount;
/**
* 变更数量changeQuantity
*/
@ExcelProperty(value = "变更数量", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "c=hangeQuantity")
private BigDecimal changeQuantity;
/**
* 变更单价changeUnitPrice
*/
@ExcelProperty(value = "变更单价", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "c=hangeUnitPrice")
private BigDecimal changeUnitPrice;
/**
* 变更后含税单价changeTaxIncludedUnitPrice
*/
@ExcelProperty(value = "变更后含税单价", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "c=hangeTaxIncludedUnitPrice")
private BigDecimal changeTaxIncludedUnitPrice;
/**
* 变更税率changeTaxRate
*/
@ExcelProperty(value = "变更税率", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "c=hangeTaxRate")
private BigDecimal changeTaxRate;
/**
* 变更税额changeTaxAmount
*/
@ExcelProperty(value = "变更税额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "c=hangeTaxAmount")
private BigDecimal changeTaxAmount;
/**
* 变更后数量afterChangeQuantity
*/
@ExcelProperty(value = "变更后数量", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "a=fterChangeQuantity")
private BigDecimal afterChangeQuantity;
/**
* 变更后单价afterChangeUnitPrice
*/
@ExcelProperty(value = "变更后单价", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "a=fterChangeUnitPrice")
private BigDecimal afterChangeUnitPrice;
/**
* 变更后含税单价afterChangeTaxIncludedUnitPrice
*/
@ExcelProperty(value = "变更后含税单价", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "a=fterChangeTaxIncludedUnitPrice")
private BigDecimal afterChangeTaxIncludedUnitPrice;
/**
* 变更后税率afterChangeTaxRate
*/
@ExcelProperty(value = "变更后税率", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "a=fterChangeTaxRate")
private BigDecimal afterChangeTaxRate;
/**
* 变更后税额afterChangeTaxAmount
*/
@ExcelProperty(value = "变更后税额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "a=fterChangeTaxAmount")
private BigDecimal afterChangeTaxAmount;
/**
* 变更后不含税金额afterChangeTaxExcludedAmount
*/
@ExcelProperty(value = "变更后不含税金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "a=fterChangeTaxExcludedAmount")
private BigDecimal afterChangeTaxExcludedAmount;
/**
* 变更后含税金额afterChangeTaxIncludedAmount
*/
@ExcelProperty(value = "变更后含税金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "a=fterChangeTaxIncludedAmount")
private BigDecimal afterChangeTaxIncludedAmount;
/**
* 备注remarks
*/
@ExcelProperty(value = "备注", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "r=emarks")
private String remarks;
/**
* 合同模式contractMode
*/
@ExcelProperty(value = "合同模式", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "c=ontractMode")
private String contractMode;
/**
* 中标预算收入bidBudgetIncome
*/
@ExcelProperty(value = "中标预算收入", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "b=idBudgetIncome")
private BigDecimal bidBudgetIncome;
/**
* 利润率profitRate如20%表示为20.00
*/
@ExcelProperty(value = "利润率", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "p=rofitRate如20%表示为20.00")
private BigDecimal profitRate;
/**
* 附件attachment存储附件路径或关联ID
*/
@ExcelProperty(value = "附件", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "a=ttachment存储附件路径或关联ID")
private String attachment;
}

View File

@ -2,16 +2,13 @@ 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 org.dromara.xzd.costProjectApproval.costBudget.domain.*;
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;
@ -199,7 +196,7 @@ public class XzdCbysZjhcbVo implements Serializable {
/**
* 成本明细
*/
List<XzdCbysWgcbtbFubiao> xzdCbysWgcbtbFubiao;
List<XzdCbysZjhcbFubiao> xzdCbysWgcbtbFubiao;
/**
* 税收成本

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.costProjectApproval.costBudget.mapper;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfjFubiao;
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysJdcbfjFubiaoVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 立项及成本-成本预算-阶段成本分解附Mapper接口
*
* @author Lion Li
* @date 2025-10-17
*/
public interface XzdCbysJdcbfjFubiaoMapper extends BaseMapperPlus<XzdCbysJdcbfjFubiao, XzdCbysJdcbfjFubiaoVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.costProjectApproval.costBudget.mapper;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfj;
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysJdcbfjVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 立项及成本-成本预算-阶段成本分解Mapper接口
*
* @author Lion Li
* @date 2025-10-17
*/
public interface XzdCbysJdcbfjMapper extends BaseMapperPlus<XzdCbysJdcbfj, XzdCbysJdcbfjVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.costProjectApproval.costBudget.mapper;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcbFubiao;
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbFubiaoVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 立项及成本-成本预算-总体计划成本附Mapper接口
*
* @author Lion Li
* @date 2025-10-17
*/
public interface XzdCbysZjhcbFubiaoMapper extends BaseMapperPlus<XzdCbysZjhcbFubiao, XzdCbysZjhcbFubiaoVo> {
}

View File

@ -0,0 +1,70 @@
package org.dromara.xzd.costProjectApproval.costBudget.service;
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysJdcbfjFubiaoVo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysJdcbfjFubiaoBo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfjFubiao;
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 IXzdCbysJdcbfjFubiaoService extends IService<XzdCbysJdcbfjFubiao>{
/**
* 查询立项及成本-成本预算-阶段成本分解附
*
* @param id 主键
* @return 立项及成本-成本预算-阶段成本分解附
*/
XzdCbysJdcbfjFubiaoVo queryById(Long id);
/**
* 分页查询立项及成本-成本预算-阶段成本分解附列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 立项及成本-成本预算-阶段成本分解附分页列表
*/
TableDataInfo<XzdCbysJdcbfjFubiaoVo> queryPageList(XzdCbysJdcbfjFubiaoBo bo, PageQuery pageQuery);
/**
* 查询符合条件的立项及成本-成本预算-阶段成本分解附列表
*
* @param bo 查询条件
* @return 立项及成本-成本预算-阶段成本分解附列表
*/
List<XzdCbysJdcbfjFubiaoVo> queryList(XzdCbysJdcbfjFubiaoBo bo);
/**
* 新增立项及成本-成本预算-阶段成本分解附
*
* @param bo 立项及成本-成本预算-阶段成本分解附
* @return 是否新增成功
*/
Boolean insertByBo(XzdCbysJdcbfjFubiaoBo bo);
/**
* 修改立项及成本-成本预算-阶段成本分解附
*
* @param bo 立项及成本-成本预算-阶段成本分解附
* @return 是否修改成功
*/
Boolean updateByBo(XzdCbysJdcbfjFubiaoBo bo);
/**
* 校验并批量删除立项及成本-成本预算-阶段成本分解附信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,70 @@
package org.dromara.xzd.costProjectApproval.costBudget.service;
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysJdcbfjVo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysJdcbfjBo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfj;
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 IXzdCbysJdcbfjService extends IService<XzdCbysJdcbfj>{
/**
* 查询立项及成本-成本预算-阶段成本分解
*
* @param id 主键
* @return 立项及成本-成本预算-阶段成本分解
*/
XzdCbysJdcbfjVo queryById(Long id);
/**
* 分页查询立项及成本-成本预算-阶段成本分解列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 立项及成本-成本预算-阶段成本分解分页列表
*/
TableDataInfo<XzdCbysJdcbfjVo> queryPageList(XzdCbysJdcbfjBo bo, PageQuery pageQuery);
/**
* 查询符合条件的立项及成本-成本预算-阶段成本分解列表
*
* @param bo 查询条件
* @return 立项及成本-成本预算-阶段成本分解列表
*/
List<XzdCbysJdcbfjVo> queryList(XzdCbysJdcbfjBo bo);
/**
* 新增立项及成本-成本预算-阶段成本分解
*
* @param bo 立项及成本-成本预算-阶段成本分解
* @return 是否新增成功
*/
Boolean insertByBo(XzdCbysJdcbfjBo bo);
/**
* 修改立项及成本-成本预算-阶段成本分解
*
* @param bo 立项及成本-成本预算-阶段成本分解
* @return 是否修改成功
*/
Boolean updateByBo(XzdCbysJdcbfjBo bo);
/**
* 校验并批量删除立项及成本-成本预算-阶段成本分解信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,70 @@
package org.dromara.xzd.costProjectApproval.costBudget.service;
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbFubiaoVo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZjhcbFubiaoBo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcbFubiao;
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 IXzdCbysZjhcbFubiaoService extends IService<XzdCbysZjhcbFubiao>{
/**
* 查询立项及成本-成本预算-总体计划成本附
*
* @param id 主键
* @return 立项及成本-成本预算-总体计划成本附
*/
XzdCbysZjhcbFubiaoVo queryById(Long id);
/**
* 分页查询立项及成本-成本预算-总体计划成本附列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 立项及成本-成本预算-总体计划成本附分页列表
*/
TableDataInfo<XzdCbysZjhcbFubiaoVo> queryPageList(XzdCbysZjhcbFubiaoBo bo, PageQuery pageQuery);
/**
* 查询符合条件的立项及成本-成本预算-总体计划成本附列表
*
* @param bo 查询条件
* @return 立项及成本-成本预算-总体计划成本附列表
*/
List<XzdCbysZjhcbFubiaoVo> queryList(XzdCbysZjhcbFubiaoBo bo);
/**
* 新增立项及成本-成本预算-总体计划成本附
*
* @param bo 立项及成本-成本预算-总体计划成本附
* @return 是否新增成功
*/
Boolean insertByBo(XzdCbysZjhcbFubiaoBo bo);
/**
* 修改立项及成本-成本预算-总体计划成本附
*
* @param bo 立项及成本-成本预算-总体计划成本附
* @return 是否修改成功
*/
Boolean updateByBo(XzdCbysZjhcbFubiaoBo bo);
/**
* 校验并批量删除立项及成本-成本预算-总体计划成本附信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -67,4 +67,6 @@ public interface IXzdCbysZjhcbService extends IService<XzdCbysZjhcb>{
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
String queryNameById(Long id);
}

View File

@ -0,0 +1,147 @@
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.XzdCbysJdcbfjFubiaoBo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysJdcbfjFubiaoVo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfjFubiao;
import org.dromara.xzd.costProjectApproval.costBudget.mapper.XzdCbysJdcbfjFubiaoMapper;
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysJdcbfjFubiaoService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 立项及成本-成本预算-阶段成本分解附Service业务层处理
*
* @author Lion Li
* @date 2025-10-17
*/
@RequiredArgsConstructor
@Service
public class XzdCbysJdcbfjFubiaoServiceImpl extends ServiceImpl<XzdCbysJdcbfjFubiaoMapper, XzdCbysJdcbfjFubiao> implements IXzdCbysJdcbfjFubiaoService {
private final XzdCbysJdcbfjFubiaoMapper baseMapper;
/**
* 查询立项及成本-成本预算-阶段成本分解附
*
* @param id 主键
* @return 立项及成本-成本预算-阶段成本分解附
*/
@Override
public XzdCbysJdcbfjFubiaoVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询立项及成本-成本预算-阶段成本分解附列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 立项及成本-成本预算-阶段成本分解附分页列表
*/
@Override
public TableDataInfo<XzdCbysJdcbfjFubiaoVo> queryPageList(XzdCbysJdcbfjFubiaoBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdCbysJdcbfjFubiao> lqw = buildQueryWrapper(bo);
Page<XzdCbysJdcbfjFubiaoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的立项及成本-成本预算-阶段成本分解附列表
*
* @param bo 查询条件
* @return 立项及成本-成本预算-阶段成本分解附列表
*/
@Override
public List<XzdCbysJdcbfjFubiaoVo> queryList(XzdCbysJdcbfjFubiaoBo bo) {
LambdaQueryWrapper<XzdCbysJdcbfjFubiao> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XzdCbysJdcbfjFubiao> buildQueryWrapper(XzdCbysJdcbfjFubiaoBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdCbysJdcbfjFubiao> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdCbysJdcbfjFubiao::getId);
lqw.eq(bo.getMainTableId() != null, XzdCbysJdcbfjFubiao::getMainTableId, bo.getMainTableId());
lqw.eq(StringUtils.isNotBlank(bo.getBudgetItemCode()), XzdCbysJdcbfjFubiao::getBudgetItemCode, bo.getBudgetItemCode());
lqw.like(StringUtils.isNotBlank(bo.getBudgetItemName()), XzdCbysJdcbfjFubiao::getBudgetItemName, bo.getBudgetItemName());
lqw.eq(StringUtils.isNotBlank(bo.getBoq()), XzdCbysJdcbfjFubiao::getBoq, bo.getBoq());
lqw.eq(StringUtils.isNotBlank(bo.getWbs()), XzdCbysJdcbfjFubiao::getWbs, bo.getWbs());
lqw.eq(StringUtils.isNotBlank(bo.getCbs()), XzdCbysJdcbfjFubiao::getCbs, bo.getCbs());
lqw.eq(StringUtils.isNotBlank(bo.getUnit()), XzdCbysJdcbfjFubiao::getUnit, bo.getUnit());
lqw.eq(bo.getQuantity() != null, XzdCbysJdcbfjFubiao::getQuantity, bo.getQuantity());
lqw.eq(bo.getUnitPrice() != null, XzdCbysJdcbfjFubiao::getUnitPrice, bo.getUnitPrice());
lqw.eq(bo.getAmount() != null, XzdCbysJdcbfjFubiao::getAmount, bo.getAmount());
lqw.eq(bo.getChangeQuantity() != null, XzdCbysJdcbfjFubiao::getChangeQuantity, bo.getChangeQuantity());
lqw.eq(bo.getChangeAmount() != null, XzdCbysJdcbfjFubiao::getChangeAmount, bo.getChangeAmount());
lqw.eq(bo.getAfterChangeQuantity() != null, XzdCbysJdcbfjFubiao::getAfterChangeQuantity, bo.getAfterChangeQuantity());
lqw.eq(bo.getAfterChangeUnitPrice() != null, XzdCbysJdcbfjFubiao::getAfterChangeUnitPrice, bo.getAfterChangeUnitPrice());
lqw.eq(bo.getAfterChangeAmount() != null, XzdCbysJdcbfjFubiao::getAfterChangeAmount, bo.getAfterChangeAmount());
lqw.eq(StringUtils.isNotBlank(bo.getDocumentReference()), XzdCbysJdcbfjFubiao::getDocumentReference, bo.getDocumentReference());
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdCbysJdcbfjFubiao::getFileId, bo.getFileId());
return lqw;
}
/**
* 新增立项及成本-成本预算-阶段成本分解附
*
* @param bo 立项及成本-成本预算-阶段成本分解附
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(XzdCbysJdcbfjFubiaoBo bo) {
XzdCbysJdcbfjFubiao add = MapstructUtils.convert(bo, XzdCbysJdcbfjFubiao.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改立项及成本-成本预算-阶段成本分解附
*
* @param bo 立项及成本-成本预算-阶段成本分解附
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(XzdCbysJdcbfjFubiaoBo bo) {
XzdCbysJdcbfjFubiao update = MapstructUtils.convert(bo, XzdCbysJdcbfjFubiao.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdCbysJdcbfjFubiao entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除立项及成本-成本预算-阶段成本分解附信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -0,0 +1,240 @@
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.common.utils.BatchNumberGenerator;
import org.dromara.system.service.ISysUserService;
import org.dromara.system.service.impl.SysOssServiceImpl;
import org.dromara.xzd.costProjectApproval.costBudget.domain.*;
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbVo;
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysJdcbfjFubiaoService;
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysZjhcbService;
import org.dromara.xzd.service.impl.XzdProjectServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysJdcbfjBo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysJdcbfjVo;
import org.dromara.xzd.costProjectApproval.costBudget.mapper.XzdCbysJdcbfjMapper;
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysJdcbfjService;
import java.util.*;
/**
* 立项及成本-成本预算-阶段成本分解Service业务层处理
*
* @author Lion Li
* @date 2025-10-17
*/
@RequiredArgsConstructor
@Service
public class XzdCbysJdcbfjServiceImpl extends ServiceImpl<XzdCbysJdcbfjMapper, XzdCbysJdcbfj> implements IXzdCbysJdcbfjService {
private final XzdCbysJdcbfjMapper baseMapper;
@Autowired
private IXzdCbysJdcbfjFubiaoService xzdCbysJdcbfjFubiaoService;
@Autowired
private SysOssServiceImpl sysOssService;
@Autowired
private XzdProjectServiceImpl xzdProjectService;
@Autowired
private ISysUserService sysUserService;
@Autowired
private IXzdCbysZjhcbService xzdCbysZjhcbService;
/**
* 查询立项及成本-成本预算-阶段成本分解
*
* @param id 主键
* @return 立项及成本-成本预算-阶段成本分解
*/
@Override
public XzdCbysJdcbfjVo queryById(Long id){
XzdCbysJdcbfjVo vo = baseMapper.selectVoById(id);
getName(vo);
getHttk(vo);
return vo;
}
/**
* 分页查询立项及成本-成本预算-阶段成本分解列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 立项及成本-成本预算-阶段成本分解分页列表
*/
@Override
public TableDataInfo<XzdCbysJdcbfjVo> queryPageList(XzdCbysJdcbfjBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdCbysJdcbfj> lqw = buildQueryWrapper(bo);
Page<XzdCbysJdcbfjVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
result.getRecords().forEach(this::getName);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的立项及成本-成本预算-阶段成本分解列表
*
* @param bo 查询条件
* @return 立项及成本-成本预算-阶段成本分解列表
*/
@Override
public List<XzdCbysJdcbfjVo> queryList(XzdCbysJdcbfjBo bo) {
LambdaQueryWrapper<XzdCbysJdcbfj> lqw = buildQueryWrapper(bo);
List<XzdCbysJdcbfjVo> vos = baseMapper.selectVoList(lqw);
vos.forEach(this::getName);
return vos;
}
private LambdaQueryWrapper<XzdCbysJdcbfj> buildQueryWrapper(XzdCbysJdcbfjBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdCbysJdcbfj> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdCbysJdcbfj::getId);
lqw.eq(StringUtils.isNotBlank(bo.getDocCode()), XzdCbysJdcbfj::getDocCode, bo.getDocCode());
lqw.eq(StringUtils.isNotBlank(bo.getDocTitle()), XzdCbysJdcbfj::getDocTitle, bo.getDocTitle());
lqw.eq(bo.getDocDate() != null, XzdCbysJdcbfj::getDocDate, bo.getDocDate());
lqw.eq(bo.getProjectId() != null, XzdCbysJdcbfj::getProjectId, bo.getProjectId());
lqw.eq(StringUtils.isNotBlank(bo.getBudgetCategory()), XzdCbysJdcbfj::getBudgetCategory, bo.getBudgetCategory());
lqw.eq(bo.getTotalPlanCost() != null, XzdCbysJdcbfj::getTotalPlanCost, bo.getTotalPlanCost());
lqw.eq(bo.getProjectLeader() != null, XzdCbysJdcbfj::getProjectLeader, bo.getProjectLeader());
lqw.eq(bo.getStartDate() != null, XzdCbysJdcbfj::getStartDate, bo.getStartDate());
lqw.eq(bo.getCompletionDate() != null, XzdCbysJdcbfj::getCompletionDate, bo.getCompletionDate());
lqw.eq(bo.getYear() != null, XzdCbysJdcbfj::getYear, bo.getYear());
lqw.eq(StringUtils.isNotBlank(bo.getCurrency()), XzdCbysJdcbfj::getCurrency, bo.getCurrency());
lqw.eq(bo.getExchangeRate() != null, XzdCbysJdcbfj::getExchangeRate, bo.getExchangeRate());
lqw.eq(StringUtils.isNotBlank(bo.getDocumentReference()), XzdCbysJdcbfj::getDocumentReference, bo.getDocumentReference());
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdCbysJdcbfj::getFileId, bo.getFileId());
return lqw;
}
/**
* 新增立项及成本-成本预算-阶段成本分解
*
* @param bo 立项及成本-成本预算-阶段成本分解
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(XzdCbysJdcbfjBo bo) {
XzdCbysJdcbfj add = MapstructUtils.convert(bo, XzdCbysJdcbfj.class);
validEntityBeforeSave(add);
String banBen = BatchNumberGenerator.generateBatchNumber("LXCBJDCBFJ-");
add.setDocCode(banBen);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
if (bo.getXzdCbysJdcbfjFubiao() != null && !bo.getXzdCbysJdcbfjFubiao().isEmpty()) {
bo.getXzdCbysJdcbfjFubiao().forEach(item -> {
String code = BatchNumberGenerator.generateBatchNumber("LXCBYSBM-");
item.setBudgetItemCode(code);
item.setMainTableId(add.getId());
});
xzdCbysJdcbfjFubiaoService.saveBatch(bo.getXzdCbysJdcbfjFubiao());
}
return flag;
}
/**
* 修改立项及成本-成本预算-阶段成本分解
*
* @param bo 立项及成本-成本预算-阶段成本分解
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(XzdCbysJdcbfjBo bo) {
XzdCbysJdcbfj update = MapstructUtils.convert(bo, XzdCbysJdcbfj.class);
validEntityBeforeSave(update);
xzdCbysJdcbfjFubiaoService.remove(new LambdaQueryWrapper<XzdCbysJdcbfjFubiao>().eq(XzdCbysJdcbfjFubiao::getMainTableId, bo.getId()));
if (bo.getXzdCbysJdcbfjFubiao() != null && !bo.getXzdCbysJdcbfjFubiao().isEmpty()) {
bo.getXzdCbysJdcbfjFubiao().forEach(item -> {
String code = BatchNumberGenerator.generateBatchNumber("LXCBYSBM-");
item.setBudgetItemCode(code);
item.setMainTableId(bo.getId());
});
xzdCbysJdcbfjFubiaoService.saveBatch(bo.getXzdCbysJdcbfjFubiao());
}
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdCbysJdcbfj entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除立项及成本-成本预算-阶段成本分解信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
List<Long> deleteIds = new ArrayList<>();
for (Long id : ids) {
XzdCbysJdcbfjVo vo = baseMapper.selectVoById(id);
if (vo != null){
//删除附件
if (vo.getFileId()!= null && !vo.getFileId().isEmpty()){
List<Long> list = Arrays.stream(vo.getFileId().split(",")).map(Long::valueOf).toList();
deleteIds.addAll(list);
}
}
}
if (!deleteIds.isEmpty()) {
sysOssService.deleteWithValidByIds(deleteIds, false);
}
xzdCbysJdcbfjFubiaoService.remove(new LambdaQueryWrapper<XzdCbysJdcbfjFubiao>().in(XzdCbysJdcbfjFubiao::getMainTableId,ids));
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 获取部分字段名称
* @param item
*/
private void getName(XzdCbysJdcbfjVo 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.getTotalPlanCost() != null){
String name = xzdCbysZjhcbService.queryNameById(item.getTotalPlanCost());
if (name != null){
item.setTotalPlanCostName(name);
}
}
}
/**
* 获取扣款与奖励项
* @param vo
*/
private void getHttk(XzdCbysJdcbfjVo vo) {
List<XzdCbysJdcbfjFubiao> xzdCbysZtjhcbBgjls = xzdCbysJdcbfjFubiaoService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdCbysJdcbfjFubiao>().eq(XzdCbysJdcbfjFubiao::getMainTableId, vo.getId()));
vo.setXzdCbysJdcbfjFubiao(xzdCbysZtjhcbBgjls);
}
}

View File

@ -0,0 +1,159 @@
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.XzdCbysZjhcbFubiaoBo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbFubiaoVo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcbFubiao;
import org.dromara.xzd.costProjectApproval.costBudget.mapper.XzdCbysZjhcbFubiaoMapper;
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysZjhcbFubiaoService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 立项及成本-成本预算-总体计划成本附Service业务层处理
*
* @author Lion Li
* @date 2025-10-17
*/
@RequiredArgsConstructor
@Service
public class XzdCbysZjhcbFubiaoServiceImpl extends ServiceImpl<XzdCbysZjhcbFubiaoMapper, XzdCbysZjhcbFubiao> implements IXzdCbysZjhcbFubiaoService {
private final XzdCbysZjhcbFubiaoMapper baseMapper;
/**
* 查询立项及成本-成本预算-总体计划成本附
*
* @param id 主键
* @return 立项及成本-成本预算-总体计划成本附
*/
@Override
public XzdCbysZjhcbFubiaoVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询立项及成本-成本预算-总体计划成本附列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 立项及成本-成本预算-总体计划成本附分页列表
*/
@Override
public TableDataInfo<XzdCbysZjhcbFubiaoVo> queryPageList(XzdCbysZjhcbFubiaoBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdCbysZjhcbFubiao> lqw = buildQueryWrapper(bo);
Page<XzdCbysZjhcbFubiaoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的立项及成本-成本预算-总体计划成本附列表
*
* @param bo 查询条件
* @return 立项及成本-成本预算-总体计划成本附列表
*/
@Override
public List<XzdCbysZjhcbFubiaoVo> queryList(XzdCbysZjhcbFubiaoBo bo) {
LambdaQueryWrapper<XzdCbysZjhcbFubiao> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XzdCbysZjhcbFubiao> buildQueryWrapper(XzdCbysZjhcbFubiaoBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdCbysZjhcbFubiao> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdCbysZjhcbFubiao::getId);
lqw.eq(StringUtils.isNotBlank(bo.getBudgetCode()), XzdCbysZjhcbFubiao::getBudgetCode, bo.getBudgetCode());
lqw.like(StringUtils.isNotBlank(bo.getBudgetName()), XzdCbysZjhcbFubiao::getBudgetName, bo.getBudgetName());
lqw.eq(StringUtils.isNotBlank(bo.getWbs()), XzdCbysZjhcbFubiao::getWbs, bo.getWbs());
lqw.eq(StringUtils.isNotBlank(bo.getCbs()), XzdCbysZjhcbFubiao::getCbs, bo.getCbs());
lqw.eq(StringUtils.isNotBlank(bo.getUnit()), XzdCbysZjhcbFubiao::getUnit, bo.getUnit());
lqw.eq(bo.getQuantity() != null, XzdCbysZjhcbFubiao::getQuantity, bo.getQuantity());
lqw.eq(bo.getUnitPrice() != null, XzdCbysZjhcbFubiao::getUnitPrice, bo.getUnitPrice());
lqw.eq(bo.getTaxIncludedUnitPrice() != null, XzdCbysZjhcbFubiao::getTaxIncludedUnitPrice, bo.getTaxIncludedUnitPrice());
lqw.eq(bo.getTaxRate() != null, XzdCbysZjhcbFubiao::getTaxRate, bo.getTaxRate());
lqw.eq(bo.getTaxAmount() != null, XzdCbysZjhcbFubiao::getTaxAmount, bo.getTaxAmount());
lqw.eq(bo.getTaxExcludedAmount() != null, XzdCbysZjhcbFubiao::getTaxExcludedAmount, bo.getTaxExcludedAmount());
lqw.eq(bo.getTaxIncludedAmount() != null, XzdCbysZjhcbFubiao::getTaxIncludedAmount, bo.getTaxIncludedAmount());
lqw.eq(bo.getChangeQuantity() != null, XzdCbysZjhcbFubiao::getChangeQuantity, bo.getChangeQuantity());
lqw.eq(bo.getChangeUnitPrice() != null, XzdCbysZjhcbFubiao::getChangeUnitPrice, bo.getChangeUnitPrice());
lqw.eq(bo.getChangeTaxIncludedUnitPrice() != null, XzdCbysZjhcbFubiao::getChangeTaxIncludedUnitPrice, bo.getChangeTaxIncludedUnitPrice());
lqw.eq(bo.getChangeTaxRate() != null, XzdCbysZjhcbFubiao::getChangeTaxRate, bo.getChangeTaxRate());
lqw.eq(bo.getChangeTaxAmount() != null, XzdCbysZjhcbFubiao::getChangeTaxAmount, bo.getChangeTaxAmount());
lqw.eq(bo.getAfterChangeQuantity() != null, XzdCbysZjhcbFubiao::getAfterChangeQuantity, bo.getAfterChangeQuantity());
lqw.eq(bo.getAfterChangeUnitPrice() != null, XzdCbysZjhcbFubiao::getAfterChangeUnitPrice, bo.getAfterChangeUnitPrice());
lqw.eq(bo.getAfterChangeTaxIncludedUnitPrice() != null, XzdCbysZjhcbFubiao::getAfterChangeTaxIncludedUnitPrice, bo.getAfterChangeTaxIncludedUnitPrice());
lqw.eq(bo.getAfterChangeTaxRate() != null, XzdCbysZjhcbFubiao::getAfterChangeTaxRate, bo.getAfterChangeTaxRate());
lqw.eq(bo.getAfterChangeTaxAmount() != null, XzdCbysZjhcbFubiao::getAfterChangeTaxAmount, bo.getAfterChangeTaxAmount());
lqw.eq(bo.getAfterChangeTaxExcludedAmount() != null, XzdCbysZjhcbFubiao::getAfterChangeTaxExcludedAmount, bo.getAfterChangeTaxExcludedAmount());
lqw.eq(bo.getAfterChangeTaxIncludedAmount() != null, XzdCbysZjhcbFubiao::getAfterChangeTaxIncludedAmount, bo.getAfterChangeTaxIncludedAmount());
lqw.eq(StringUtils.isNotBlank(bo.getRemarks()), XzdCbysZjhcbFubiao::getRemarks, bo.getRemarks());
lqw.eq(StringUtils.isNotBlank(bo.getContractMode()), XzdCbysZjhcbFubiao::getContractMode, bo.getContractMode());
lqw.eq(bo.getBidBudgetIncome() != null, XzdCbysZjhcbFubiao::getBidBudgetIncome, bo.getBidBudgetIncome());
lqw.eq(bo.getProfitRate() != null, XzdCbysZjhcbFubiao::getProfitRate, bo.getProfitRate());
lqw.eq(StringUtils.isNotBlank(bo.getAttachment()), XzdCbysZjhcbFubiao::getAttachment, bo.getAttachment());
return lqw;
}
/**
* 新增立项及成本-成本预算-总体计划成本附
*
* @param bo 立项及成本-成本预算-总体计划成本附
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(XzdCbysZjhcbFubiaoBo bo) {
XzdCbysZjhcbFubiao add = MapstructUtils.convert(bo, XzdCbysZjhcbFubiao.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改立项及成本-成本预算-总体计划成本附
*
* @param bo 立项及成本-成本预算-总体计划成本附
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(XzdCbysZjhcbFubiaoBo bo) {
XzdCbysZjhcbFubiao update = MapstructUtils.convert(bo, XzdCbysZjhcbFubiao.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdCbysZjhcbFubiao entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除立项及成本-成本预算-总体计划成本附信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -10,14 +10,11 @@ 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.common.utils.BatchNumberGenerator;
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.costProjectApproval.costBudget.domain.*;
import org.dromara.xzd.costProjectApproval.costBudget.service.*;
import org.dromara.xzd.service.impl.XzdProjectServiceImpl;
import org.dromara.xzd.settlement.domain.XzdJsDeductionItems;
import org.dromara.xzd.settlement.domain.vo.XzdJsCgJungonVo;
@ -25,9 +22,7 @@ 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.*;
@ -49,7 +44,7 @@ public class XzdCbysZjhcbServiceImpl extends ServiceImpl<XzdCbysZjhcbMapper, Xzd
@Autowired
private IXzdCbysSscbService xzdCbysSscbService;
@Autowired
private IXzdCbysWgcbtbFubiaoService fubiaoService;
private IXzdCbysZjhcbFubiaoService fubiaoService;
@Autowired
private SysOssServiceImpl sysOssService;
@Autowired
@ -140,6 +135,8 @@ public class XzdCbysZjhcbServiceImpl extends ServiceImpl<XzdCbysZjhcbMapper, Xzd
public Boolean insertByBo(XzdCbysZjhcbBo bo) {
XzdCbysZjhcb add = MapstructUtils.convert(bo, XzdCbysZjhcb.class);
validEntityBeforeSave(add);
String banBen = BatchNumberGenerator.generateBatchNumber("LXCBZTJHCB-");
add.setDocCode(banBen);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
@ -157,7 +154,7 @@ public class XzdCbysZjhcbServiceImpl extends ServiceImpl<XzdCbysZjhcbMapper, Xzd
xzdCbysSscbService.saveBatch(bo.getXzdCbysSscb());
bo.getXzdCbysZtjhcbBgjl().forEach(item -> {item.setMainDocumentId(add.getId());});
xzdCbysZtjhcbBgjlService.saveBatch(bo.getXzdCbysZtjhcbBgjl());
bo.getXzdCbysWgcbtbFubiao().forEach(item -> {item.setMainDocId(add.getId());});
bo.getXzdCbysWgcbtbFubiao().forEach(item -> {item.setMainDocumentId(add.getId());});
fubiaoService.saveBatch(bo.getXzdCbysWgcbtbFubiao());
return flag;
}
@ -184,12 +181,12 @@ public class XzdCbysZjhcbServiceImpl extends ServiceImpl<XzdCbysZjhcbMapper, Xzd
}
xzdCbysZtjhcbBgjlService.remove(new LambdaQueryWrapper<XzdCbysZtjhcbBgjl>().eq(XzdCbysZtjhcbBgjl::getMainDocumentId, bo.getId()));
xzdCbysSscbService.remove(new LambdaQueryWrapper<XzdCbysSscb>().eq(XzdCbysSscb::getMainDocumentId, bo.getId()));
fubiaoService.remove(new LambdaQueryWrapper<XzdCbysWgcbtbFubiao>().eq(XzdCbysWgcbtbFubiao::getMainDocId, bo.getId()));
fubiaoService.remove(new LambdaQueryWrapper<XzdCbysZjhcbFubiao>().eq(XzdCbysZjhcbFubiao::getMainDocumentId, 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());});
bo.getXzdCbysWgcbtbFubiao().forEach(item -> {item.setMainDocumentId(bo.getId());});
fubiaoService.saveBatch(bo.getXzdCbysWgcbtbFubiao());
return baseMapper.updateById(update) > 0;
}
@ -230,10 +227,15 @@ public class XzdCbysZjhcbServiceImpl extends ServiceImpl<XzdCbysZjhcbMapper, Xzd
}
xzdCbysZtjhcbBgjlService.remove(new LambdaQueryWrapper<XzdCbysZtjhcbBgjl>().in(XzdCbysZtjhcbBgjl::getMainDocumentId, ids));
xzdCbysSscbService.remove(new LambdaQueryWrapper<XzdCbysSscb>().in(XzdCbysSscb::getMainDocumentId, ids));
fubiaoService.remove(new LambdaQueryWrapper<XzdCbysWgcbtbFubiao>().in(XzdCbysWgcbtbFubiao::getMainDocId, ids));
fubiaoService.remove(new LambdaQueryWrapper<XzdCbysZjhcbFubiao>().in(XzdCbysZjhcbFubiao::getMainDocumentId, ids));
return baseMapper.deleteByIds(ids) > 0;
}
@Override
public String queryNameById(Long id) {
return baseMapper.selectVoById(id).getDocTitle();
}
/**
* 获取部分字段名称
@ -271,7 +273,7 @@ public class XzdCbysZjhcbServiceImpl extends ServiceImpl<XzdCbysZjhcbMapper, Xzd
vo.setXzdCbysZtjhcbBgjl(xzdCbysZtjhcbBgjls);
List<XzdCbysSscb> xzdCbysSscbs = xzdCbysSscbService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdCbysSscb>().eq(XzdCbysSscb::getMainDocumentId, vo.getId()));
vo.setXzdCbysSscb(xzdCbysSscbs);
List<XzdCbysWgcbtbFubiao> xzdCbysWgcbtbFubiaos = fubiaoService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdCbysWgcbtbFubiao>().eq(XzdCbysWgcbtbFubiao::getMainDocId, vo.getId()));
List<XzdCbysZjhcbFubiao> xzdCbysWgcbtbFubiaos = fubiaoService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdCbysZjhcbFubiao>().eq(XzdCbysZjhcbFubiao::getMainDocumentId, vo.getId()));
vo.setXzdCbysWgcbtbFubiao(xzdCbysWgcbtbFubiaos);
}
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.xzd.costProjectApproval.costBudget.mapper.XzdCbysJdcbfjFubiaoMapper">
</mapper>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.xzd.costProjectApproval.costBudget.mapper.XzdCbysJdcbfjMapper">
</mapper>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.xzd.costProjectApproval.costBudget.mapper.XzdCbysZjhcbFubiaoMapper">
</mapper>