diff --git a/xinnengyuan/ruoyi-admin/src/main/resources/application.yml b/xinnengyuan/ruoyi-admin/src/main/resources/application.yml index 2879f78d..0abd0799 100644 --- a/xinnengyuan/ruoyi-admin/src/main/resources/application.yml +++ b/xinnengyuan/ruoyi-admin/src/main/resources/application.yml @@ -253,6 +253,8 @@ springdoc: packages-to-scan: org.dromara.design - group: 13.工作流模块 packages-to-scan: org.dromara.workflow + - group: 14.合同模块 + packages-to-scan: org.dromara.ctr - group: 15.无人机模块 packages-to-scan: org.dromara.drone - group: 20.代码生成模块 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/controller/CtrContractProgressSettlementController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/controller/CtrContractProgressSettlementController.java new file mode 100644 index 00000000..f7b099aa --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/controller/CtrContractProgressSettlementController.java @@ -0,0 +1,107 @@ +package org.dromara.ctr.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.ctr.domain.bo.CtrContractProgressSettlementBo; +import org.dromara.ctr.domain.dto.CtrContractProgressSettlementCreateReq; +import org.dromara.ctr.domain.dto.CtrContractProgressSettlementUpdateReq; +import org.dromara.ctr.domain.vo.CtrContractProgressSettlementVo; +import org.dromara.ctr.service.ICtrContractProgressSettlementService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 承包合同进度结算 + * + * @author lilemy + * @date 2025-10-18 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/ctr/contractProgressSettlement") +public class CtrContractProgressSettlementController extends BaseController { + + private final ICtrContractProgressSettlementService ctrContractProgressSettlementService; + + /** + * 查询承包合同进度结算列表 + */ + @SaCheckPermission("ctr:contractProgressSettlement:list") + @GetMapping("/list") + public TableDataInfo list(CtrContractProgressSettlementBo bo, PageQuery pageQuery) { + return ctrContractProgressSettlementService.queryPageList(bo, pageQuery); + } + + /** + * 导出承包合同进度结算列表 + */ + @SaCheckPermission("ctr:contractProgressSettlement:export") + @Log(title = "承包合同进度结算", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(CtrContractProgressSettlementBo bo, HttpServletResponse response) { + List list = ctrContractProgressSettlementService.queryList(bo); + ExcelUtil.exportExcel(list, "承包合同进度结算", CtrContractProgressSettlementVo.class, response); + } + + /** + * 获取承包合同进度结算详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("ctr:contractProgressSettlement:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(ctrContractProgressSettlementService.queryById(id)); + } + + /** + * 新增承包合同进度结算 + */ + @SaCheckPermission("ctr:contractProgressSettlement:add") + @Log(title = "承包合同进度结算", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated @RequestBody CtrContractProgressSettlementCreateReq req) { + return toAjax(ctrContractProgressSettlementService.insertByBo(req)); + } + + /** + * 修改承包合同进度结算 + */ + @SaCheckPermission("ctr:contractProgressSettlement:edit") + @Log(title = "承包合同进度结算", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated @RequestBody CtrContractProgressSettlementUpdateReq req) { + return toAjax(ctrContractProgressSettlementService.updateByBo(req)); + } + + /** + * 删除承包合同进度结算 + * + * @param ids 主键串 + */ + @SaCheckPermission("ctr:contractProgressSettlement:remove") + @Log(title = "承包合同进度结算", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(ctrContractProgressSettlementService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/controller/CtrContractProgressSettlementItemController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/controller/CtrContractProgressSettlementItemController.java new file mode 100644 index 00000000..5b298f89 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/controller/CtrContractProgressSettlementItemController.java @@ -0,0 +1,105 @@ +package org.dromara.ctr.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.ctr.domain.vo.CtrContractProgressSettlementItemVo; +import org.dromara.ctr.domain.bo.CtrContractProgressSettlementItemBo; +import org.dromara.ctr.service.ICtrContractProgressSettlementItemService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 承包合同进度结算清单 + * + * @author lilemy + * @date 2025-10-18 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/ctr/contractProgressSettlementItem") +public class CtrContractProgressSettlementItemController extends BaseController { + + private final ICtrContractProgressSettlementItemService ctrContractProgressSettlementItemService; + + /** + * 查询承包合同进度结算清单列表 + */ + @SaCheckPermission("ctr:contractProgressSettlementItem:list") + @GetMapping("/list") + public TableDataInfo list(CtrContractProgressSettlementItemBo bo, PageQuery pageQuery) { + return ctrContractProgressSettlementItemService.queryPageList(bo, pageQuery); + } + + /** + * 导出承包合同进度结算清单列表 + */ + @SaCheckPermission("ctr:contractProgressSettlementItem:export") + @Log(title = "承包合同进度结算清单", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(CtrContractProgressSettlementItemBo bo, HttpServletResponse response) { + List list = ctrContractProgressSettlementItemService.queryList(bo); + ExcelUtil.exportExcel(list, "承包合同进度结算清单", CtrContractProgressSettlementItemVo.class, response); + } + + /** + * 获取承包合同进度结算清单详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("ctr:contractProgressSettlementItem:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(ctrContractProgressSettlementItemService.queryById(id)); + } + + /** + * 新增承包合同进度结算清单 + */ + @SaCheckPermission("ctr:contractProgressSettlementItem:add") + @Log(title = "承包合同进度结算清单", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody CtrContractProgressSettlementItemBo bo) { + return toAjax(ctrContractProgressSettlementItemService.insertByBo(bo)); + } + + /** + * 修改承包合同进度结算清单 + */ + @SaCheckPermission("ctr:contractProgressSettlementItem:edit") + @Log(title = "承包合同进度结算清单", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody CtrContractProgressSettlementItemBo bo) { + return toAjax(ctrContractProgressSettlementItemService.updateByBo(bo)); + } + + /** + * 删除承包合同进度结算清单 + * + * @param ids 主键串 + */ + @SaCheckPermission("ctr:contractProgressSettlementItem:remove") + @Log(title = "承包合同进度结算清单", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(ctrContractProgressSettlementItemService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/controller/CtrSubcontractProgressSettlementController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/controller/CtrSubcontractProgressSettlementController.java new file mode 100644 index 00000000..11bbb272 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/controller/CtrSubcontractProgressSettlementController.java @@ -0,0 +1,106 @@ +package org.dromara.ctr.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.ctr.domain.bo.CtrSubcontractProgressSettlementBo; +import org.dromara.ctr.domain.dto.CtrSubcontractProgressSettlementCreateReq; +import org.dromara.ctr.domain.dto.CtrSubcontractProgressSettlementUpdateReq; +import org.dromara.ctr.domain.vo.CtrSubcontractProgressSettlementVo; +import org.dromara.ctr.service.ICtrSubcontractProgressSettlementService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 分包合同进度结算 + * + * @author lilemy + * @date 2025-10-18 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/ctr/subcontractProgressSettlement") +public class CtrSubcontractProgressSettlementController extends BaseController { + + private final ICtrSubcontractProgressSettlementService ctrSubcontractProgressSettlementService; + + /** + * 查询分包合同进度结算列表 + */ + @SaCheckPermission("ctr:subcontractProgressSettlement:list") + @GetMapping("/list") + public TableDataInfo list(CtrSubcontractProgressSettlementBo bo, PageQuery pageQuery) { + return ctrSubcontractProgressSettlementService.queryPageList(bo, pageQuery); + } + + /** + * 导出分包合同进度结算列表 + */ + @SaCheckPermission("ctr:subcontractProgressSettlement:export") + @Log(title = "分包合同进度结算", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(CtrSubcontractProgressSettlementBo bo, HttpServletResponse response) { + List list = ctrSubcontractProgressSettlementService.queryList(bo); + ExcelUtil.exportExcel(list, "分包合同进度结算", CtrSubcontractProgressSettlementVo.class, response); + } + + /** + * 获取分包合同进度结算详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("ctr:subcontractProgressSettlement:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(ctrSubcontractProgressSettlementService.queryById(id)); + } + + /** + * 新增分包合同进度结算 + */ + @SaCheckPermission("ctr:subcontractProgressSettlement:add") + @Log(title = "分包合同进度结算", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated @RequestBody CtrSubcontractProgressSettlementCreateReq req) { + return toAjax(ctrSubcontractProgressSettlementService.insertByBo(req)); + } + + /** + * 修改分包合同进度结算 + */ + @SaCheckPermission("ctr:subcontractProgressSettlement:edit") + @Log(title = "分包合同进度结算", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated @RequestBody CtrSubcontractProgressSettlementUpdateReq req) { + return toAjax(ctrSubcontractProgressSettlementService.updateByBo(req)); + } + + /** + * 删除分包合同进度结算 + * + * @param ids 主键串 + */ + @SaCheckPermission("ctr:subcontractProgressSettlement:remove") + @Log(title = "分包合同进度结算", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(ctrSubcontractProgressSettlementService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/controller/CtrSubcontractProgressSettlementItemController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/controller/CtrSubcontractProgressSettlementItemController.java new file mode 100644 index 00000000..a3248ad7 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/controller/CtrSubcontractProgressSettlementItemController.java @@ -0,0 +1,105 @@ +package org.dromara.ctr.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.ctr.domain.vo.CtrSubcontractProgressSettlementItemVo; +import org.dromara.ctr.domain.bo.CtrSubcontractProgressSettlementItemBo; +import org.dromara.ctr.service.ICtrSubcontractProgressSettlementItemService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 分包合同进度结算清单 + * + * @author lilemy + * @date 2025-10-18 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/ctr/subcontractProgressSettlementItem") +public class CtrSubcontractProgressSettlementItemController extends BaseController { + + private final ICtrSubcontractProgressSettlementItemService ctrSubcontractProgressSettlementItemService; + + /** + * 查询分包合同进度结算清单列表 + */ + @SaCheckPermission("ctr:subcontractProgressSettlementItem:list") + @GetMapping("/list") + public TableDataInfo list(CtrSubcontractProgressSettlementItemBo bo, PageQuery pageQuery) { + return ctrSubcontractProgressSettlementItemService.queryPageList(bo, pageQuery); + } + + /** + * 导出分包合同进度结算清单列表 + */ + @SaCheckPermission("ctr:subcontractProgressSettlementItem:export") + @Log(title = "分包合同进度结算清单", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(CtrSubcontractProgressSettlementItemBo bo, HttpServletResponse response) { + List list = ctrSubcontractProgressSettlementItemService.queryList(bo); + ExcelUtil.exportExcel(list, "分包合同进度结算清单", CtrSubcontractProgressSettlementItemVo.class, response); + } + + /** + * 获取分包合同进度结算清单详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("ctr:subcontractProgressSettlementItem:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(ctrSubcontractProgressSettlementItemService.queryById(id)); + } + + /** + * 新增分包合同进度结算清单 + */ + @SaCheckPermission("ctr:subcontractProgressSettlementItem:add") + @Log(title = "分包合同进度结算清单", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody CtrSubcontractProgressSettlementItemBo bo) { + return toAjax(ctrSubcontractProgressSettlementItemService.insertByBo(bo)); + } + + /** + * 修改分包合同进度结算清单 + */ + @SaCheckPermission("ctr:subcontractProgressSettlementItem:edit") + @Log(title = "分包合同进度结算清单", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody CtrSubcontractProgressSettlementItemBo bo) { + return toAjax(ctrSubcontractProgressSettlementItemService.updateByBo(bo)); + } + + /** + * 删除分包合同进度结算清单 + * + * @param ids 主键串 + */ + @SaCheckPermission("ctr:subcontractProgressSettlementItem:remove") + @Log(title = "分包合同进度结算清单", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(ctrSubcontractProgressSettlementItemService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/CtrContractProgressSettlement.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/CtrContractProgressSettlement.java new file mode 100644 index 00000000..f89196c8 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/CtrContractProgressSettlement.java @@ -0,0 +1,139 @@ +package org.dromara.ctr.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +import java.io.Serial; +import java.math.BigDecimal; +import java.time.LocalDate; + +/** + * 承包合同进度结算对象 ctr_contract_progress_settlement + * + * @author lilemy + * @date 2025-10-18 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("ctr_contract_progress_settlement") +public class CtrContractProgressSettlement extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 所属部门 + */ + private Long deptId; + + /** + * 单据编码 + */ + private String documentCode; + + /** + * 标题 + */ + private String title; + + /** + * 结算日期 + */ + private LocalDate settlementDate; + + /** + * 合同编码 + */ + private String contractCode; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 统计周期 + */ + private String contractProgress; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 项目名称 + */ + private String projectName; + + /** + * 审批金额 + */ + private BigDecimal approvalAmount; + + /** + * 计量开始日期 + */ + private LocalDate measureDateBegin; + + /** + * 计量结束日期 + */ + private LocalDate measureDateEnd; + + /** + * 结算单位(客户) + */ + private Long settlementUnit; + + /** + * 本期结算金额 + */ + private BigDecimal settlementMoney; + + /** + * 本期扣款金额 + */ + private BigDecimal deductionMoney; + + /** + * 本期奖励金额 + */ + private BigDecimal bonus; + + /** + * 合同金额 + */ + private BigDecimal contractAmount; + + /** + * 本次结算比例 + */ + private BigDecimal thisSettlementRatio; + + /** + * 支付条款 + */ + private Long paymentTerms; + + /** + * 多文件逗号分隔 + */ + private String fileId; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/CtrContractProgressSettlementItem.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/CtrContractProgressSettlementItem.java new file mode 100644 index 00000000..ac1cd262 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/CtrContractProgressSettlementItem.java @@ -0,0 +1,107 @@ +package org.dromara.ctr.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; + +/** + * 承包合同进度结算清单对象 ctr_contract_progress_settlement_item + * + * @author lilemy + * @date 2025-10-18 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("ctr_contract_progress_settlement_item") +public class CtrContractProgressSettlementItem extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 结算单ID + */ + private Long settlementId; + + /** + * 类型(1合同内清单 2变更增加清单 3合同外清单) + */ + private String type; + + /** + * 编码 + */ + private String code; + + /** + * 合同清单名称 + */ + private String name; + + /** + * 计量单位 + */ + private String unit; + + /** + * 单价 + */ + private BigDecimal unitPrice; + + /** + * 含税单价 + */ + private BigDecimal taxUnitPrice; + + /** + * 本期结算数量 + */ + private BigDecimal currentQty; + + /** + * 本期结算百分比 + */ + private BigDecimal currentRate; + + /** + * 本期结算金额 + */ + private BigDecimal currentAmount; + + /** + * 本期结算不含税金额 + */ + private BigDecimal currentNoAmount; + + /** + * 本期审批数量 + */ + private BigDecimal currentApprovedQty; + + /** + * 本期审批金额 + */ + private BigDecimal currentApprovedAmount; + + /** + * 税率(%) + */ + private String taxRate; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/CtrSubcontractProgressSettlement.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/CtrSubcontractProgressSettlement.java new file mode 100644 index 00000000..a873a84d --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/CtrSubcontractProgressSettlement.java @@ -0,0 +1,118 @@ +package org.dromara.ctr.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; + +/** + * 分包合同进度结算对象 ctr_subcontract_progress_settlement + * + * @author lilemy + * @date 2025-10-18 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("ctr_subcontract_progress_settlement") +public class CtrSubcontractProgressSettlement extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 单据编码 + */ + private String documentCode; + + /** + * 标题 + */ + private String title; + + /** + * 单据日期 + */ + private LocalDate documentDate; + + /** + * 合同编码 + */ + private String contractCode; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 统计周期 + */ + private String contractProgress; + + /** + * 计量开始日期 + */ + private LocalDate measureDateBegin; + + /** + * 计量结束日期 + */ + private LocalDate measureDateEnd; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 项目名称 + */ + private String projectName; + + /** + * 审批金额 + */ + private BigDecimal approvalAmount; + + /** + * 结算单位 + */ + private Long settlementUnit; + + /** + * 合同金额 + */ + private BigDecimal contractAmount; + + /** + * 本次结算比例 + */ + private BigDecimal currentSettlementRate; + + /** + * 文件ID + */ + private String fileId; + + /** + * 审核状态 + */ + private String auditStatus; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/CtrSubcontractProgressSettlementItem.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/CtrSubcontractProgressSettlementItem.java new file mode 100644 index 00000000..4081ee94 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/CtrSubcontractProgressSettlementItem.java @@ -0,0 +1,130 @@ +package org.dromara.ctr.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 分包合同进度结算清单对象 ctr_subcontract_progress_settlement_item + * + * @author lilemy + * @date 2025-10-18 + */ +@Data +@TableName("ctr_subcontract_progress_settlement_item") +public class CtrSubcontractProgressSettlementItem implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 结算单ID + */ + private Long settlementId; + + /** + * 类型(1合同内清单 2变更增加清单 3合同外清单) + */ + private String type; + + /** + * 编码 + */ + private String code; + + /** + * 合同清单名称 + */ + private String name; + + /** + * 计量单位 + */ + private String unit; + + /** + * 单价 + */ + private BigDecimal unitPrice; + + /** + * 含税单价 + */ + private BigDecimal taxUnitPrice; + + /** + * 本期结算数量 + */ + private BigDecimal currentQty; + + /** + * 本期结算百分比 + */ + private BigDecimal currentRate; + + /** + * 本期结算金额 + */ + private BigDecimal currentAmount; + + /** + * 本期结算不含税金额 + */ + private BigDecimal currentNoAmount; + + /** + * 本期审批数量 + */ + private BigDecimal currentApprovedQty; + + /** + * 本期审批金额 + */ + private BigDecimal currentApprovedAmount; + + /** + * 税率(%) + */ + private String taxRate; + + /** + * 税额 + */ + private String tax; + + /** + * WBS工作分解结构 + */ + private String wbs; + + /** + * CBS成本分解结构 + */ + private String cbs; + + /** + * CBS预算总额 + */ + private BigDecimal cbsBudgetTotal; + + /** + * CBS余额 + */ + private BigDecimal cbsBalance; + + /** + * 备注 + */ + private String remark; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/bo/CtrContractProgressSettlementBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/bo/CtrContractProgressSettlementBo.java new file mode 100644 index 00000000..f49a6b67 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/bo/CtrContractProgressSettlementBo.java @@ -0,0 +1,145 @@ +package org.dromara.ctr.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.ctr.domain.CtrContractProgressSettlement; + +import java.math.BigDecimal; +import java.time.LocalDate; + +/** + * 承包合同进度结算业务对象 ctr_contract_progress_settlement + * + * @author lilemy + * @date 2025-10-18 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = CtrContractProgressSettlement.class, reverseConvertGenerate = false) +public class CtrContractProgressSettlementBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = {EditGroup.class}) + private Long id; + + /** + * 所属部门 + */ + @NotNull(message = "所属部门不能为空", groups = {AddGroup.class, EditGroup.class}) + private Long deptId; + + /** + * 单据编码 + */ + @NotBlank(message = "单据编码不能为空", groups = {AddGroup.class, EditGroup.class}) + private String documentCode; + + /** + * 标题 + */ + @NotBlank(message = "标题不能为空", groups = {AddGroup.class, EditGroup.class}) + private String title; + + /** + * 结算日期 + */ + @NotNull(message = "结算日期不能为空", groups = {AddGroup.class, EditGroup.class}) + private LocalDate settlementDate; + + /** + * 合同编码 + */ + @NotBlank(message = "合同编码不能为空", groups = {AddGroup.class, EditGroup.class}) + private String contractCode; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 统计周期 + */ + private String contractProgress; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 项目名称 + */ + private String projectName; + + /** + * 审批金额 + */ + @NotNull(message = "审批金额不能为空", groups = {AddGroup.class, EditGroup.class}) + private BigDecimal approvalAmount; + + /** + * 计量开始日期 + */ + private LocalDate measureDateBegin; + + /** + * 计量结束日期 + */ + private LocalDate measureDateEnd; + + /** + * 结算单位(客户) + */ + private Long settlementUnit; + + /** + * 本期结算金额 + */ + private BigDecimal settlementMoney; + + /** + * 本期扣款金额 + */ + private BigDecimal deductionMoney; + + /** + * 本期奖励金额 + */ + private BigDecimal bonus; + + /** + * 合同金额 + */ + private BigDecimal contractAmount; + + /** + * 本次结算比例 + */ + private BigDecimal thisSettlementRatio; + + /** + * 支付条款 + */ + private Long paymentTerms; + + /** + * 多文件逗号分隔 + */ + private String fileId; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/bo/CtrContractProgressSettlementItemBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/bo/CtrContractProgressSettlementItemBo.java new file mode 100644 index 00000000..763c0b63 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/bo/CtrContractProgressSettlementItemBo.java @@ -0,0 +1,110 @@ +package org.dromara.ctr.domain.bo; + +import org.dromara.ctr.domain.CtrContractProgressSettlementItem; +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; + +/** + * 承包合同进度结算清单业务对象 ctr_contract_progress_settlement_item + * + * @author lilemy + * @date 2025-10-18 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = CtrContractProgressSettlementItem.class, reverseConvertGenerate = false) +public class CtrContractProgressSettlementItemBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 结算单ID + */ + @NotNull(message = "结算单ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long settlementId; + + /** + * 类型(1合同内清单 2变更增加清单 3合同外清单) + */ + @NotBlank(message = "类型(1合同内清单 2变更增加清单 3合同外清单)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String type; + + /** + * 编码 + */ + @NotBlank(message = "编码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String code; + + /** + * 合同清单名称 + */ + @NotBlank(message = "合同清单名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String name; + + /** + * 计量单位 + */ + @NotBlank(message = "计量单位不能为空", groups = { AddGroup.class, EditGroup.class }) + private String unit; + + /** + * 单价 + */ + private BigDecimal unitPrice; + + /** + * 含税单价 + */ + private BigDecimal taxUnitPrice; + + /** + * 本期结算数量 + */ + private BigDecimal currentQty; + + /** + * 本期结算百分比 + */ + private BigDecimal currentRate; + + /** + * 本期结算金额 + */ + private BigDecimal currentAmount; + + /** + * 本期结算不含税金额 + */ + private BigDecimal currentNoAmount; + + /** + * 本期审批数量 + */ + private BigDecimal currentApprovedQty; + + /** + * 本期审批金额 + */ + private BigDecimal currentApprovedAmount; + + /** + * 税率(%) + */ + private String taxRate; + + /** + * 备注 + */ + private String remark; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/bo/CtrSubcontractProgressSettlementBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/bo/CtrSubcontractProgressSettlementBo.java new file mode 100644 index 00000000..d12b7525 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/bo/CtrSubcontractProgressSettlementBo.java @@ -0,0 +1,122 @@ +package org.dromara.ctr.domain.bo; + +import org.dromara.ctr.domain.CtrSubcontractProgressSettlement; +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; + +/** + * 分包合同进度结算业务对象 ctr_subcontract_progress_settlement + * + * @author lilemy + * @date 2025-10-18 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = CtrSubcontractProgressSettlement.class, reverseConvertGenerate = false) +public class CtrSubcontractProgressSettlementBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 单据编码 + */ + @NotBlank(message = "单据编码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String documentCode; + + /** + * 标题 + */ + @NotBlank(message = "标题不能为空", groups = { AddGroup.class, EditGroup.class }) + private String title; + + /** + * 单据日期 + */ + @NotNull(message = "单据日期不能为空", groups = { AddGroup.class, EditGroup.class }) + private LocalDate documentDate; + + /** + * 合同编码 + */ + @NotBlank(message = "合同编码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String contractCode; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 统计周期 + */ + private String contractProgress; + + /** + * 计量开始日期 + */ + private LocalDate measureDateBegin; + + /** + * 计量结束日期 + */ + private LocalDate measureDateEnd; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 项目名称 + */ + private String projectName; + + /** + * 审批金额 + */ + @NotNull(message = "审批金额不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal approvalAmount; + + /** + * 结算单位 + */ + private Long settlementUnit; + + /** + * 合同金额 + */ + private BigDecimal contractAmount; + + /** + * 本次结算比例 + */ + private BigDecimal currentSettlementRate; + + /** + * 文件ID + */ + private String fileId; + + /** + * 审核状态 + */ + private String auditStatus; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/bo/CtrSubcontractProgressSettlementItemBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/bo/CtrSubcontractProgressSettlementItemBo.java new file mode 100644 index 00000000..e29126d3 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/bo/CtrSubcontractProgressSettlementItemBo.java @@ -0,0 +1,136 @@ +package org.dromara.ctr.domain.bo; + +import org.dromara.ctr.domain.CtrSubcontractProgressSettlementItem; +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; + +/** + * 分包合同进度结算清单业务对象 ctr_subcontract_progress_settlement_item + * + * @author lilemy + * @date 2025-10-18 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = CtrSubcontractProgressSettlementItem.class, reverseConvertGenerate = false) +public class CtrSubcontractProgressSettlementItemBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 结算单ID + */ + @NotNull(message = "结算单ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long settlementId; + + /** + * 类型(1合同内清单 2变更增加清单 3合同外清单) + */ + @NotBlank(message = "类型(1合同内清单 2变更增加清单 3合同外清单)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String type; + + /** + * 编码 + */ + @NotBlank(message = "编码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String code; + + /** + * 合同清单名称 + */ + @NotBlank(message = "合同清单名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String name; + + /** + * 计量单位 + */ + @NotBlank(message = "计量单位不能为空", groups = { AddGroup.class, EditGroup.class }) + private String unit; + + /** + * 单价 + */ + private BigDecimal unitPrice; + + /** + * 含税单价 + */ + private BigDecimal taxUnitPrice; + + /** + * 本期结算数量 + */ + private BigDecimal currentQty; + + /** + * 本期结算百分比 + */ + private BigDecimal currentRate; + + /** + * 本期结算金额 + */ + private BigDecimal currentAmount; + + /** + * 本期结算不含税金额 + */ + private BigDecimal currentNoAmount; + + /** + * 本期审批数量 + */ + private BigDecimal currentApprovedQty; + + /** + * 本期审批金额 + */ + private BigDecimal currentApprovedAmount; + + /** + * 税率(%) + */ + private String taxRate; + + /** + * 税额 + */ + private String tax; + + /** + * WBS工作分解结构 + */ + private String wbs; + + /** + * CBS成本分解结构 + */ + private String cbs; + + /** + * CBS预算总额 + */ + private BigDecimal cbsBudgetTotal; + + /** + * CBS余额 + */ + private BigDecimal cbsBalance; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/dto/CtrContractProgressSettlementCreateReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/dto/CtrContractProgressSettlementCreateReq.java new file mode 100644 index 00000000..7ced0af4 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/dto/CtrContractProgressSettlementCreateReq.java @@ -0,0 +1,154 @@ +package org.dromara.ctr.domain.dto; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.dromara.ctr.domain.CtrContractProgressSettlement; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.List; + +/** + * 承包合同进度结算业务对象 ctr_contract_progress_settlement + * + * @author lilemy + * @date 2025-10-18 + */ +@Data +@AutoMapper(target = CtrContractProgressSettlement.class, reverseConvertGenerate = false) +public class CtrContractProgressSettlementCreateReq implements Serializable { + + @Serial + private static final long serialVersionUID = -7707258738219359278L; + + /** + * 所属部门 + */ + @NotNull(message = "所属部门不能为空") + private Long deptId; + + /** + * 单据编码 + */ + @NotBlank(message = "单据编码不能为空") + private String documentCode; + + /** + * 标题 + */ + @NotBlank(message = "标题不能为空") + private String title; + + /** + * 结算日期 + */ + @NotNull(message = "结算日期不能为空") + private LocalDate settlementDate; + + /** + * 合同编码 + */ + @NotBlank(message = "合同编码不能为空") + private String contractCode; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 统计周期 + */ + private String contractProgress; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 项目名称 + */ + private String projectName; + + /** + * 审批金额 + */ + @NotNull(message = "审批金额不能为空") + private BigDecimal approvalAmount; + + /** + * 计量开始日期 + */ + private LocalDate measureDateBegin; + + /** + * 计量结束日期 + */ + private LocalDate measureDateEnd; + + /** + * 结算单位(客户) + */ + private Long settlementUnit; + + /** + * 本期结算金额 + */ + private BigDecimal settlementMoney; + + /** + * 本期扣款金额 + */ + private BigDecimal deductionMoney; + + /** + * 本期奖励金额 + */ + private BigDecimal bonus; + + /** + * 合同金额 + */ + private BigDecimal contractAmount; + + /** + * 本次结算比例 + */ + private BigDecimal thisSettlementRatio; + + /** + * 支付条款 + */ + private Long paymentTerms; + + /** + * 多文件逗号分隔 + */ + private String fileId; + + /** + * 备注 + */ + private String remark; + + /** + * 合同内清单 + */ + private List inInventory; + + /** + * 变更增加清单 + */ + private List changeInventory; + + /** + * 合同外清单 + */ + private List outInventory; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/dto/CtrContractProgressSettlementItemCreateReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/dto/CtrContractProgressSettlementItemCreateReq.java new file mode 100644 index 00000000..c848838c --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/dto/CtrContractProgressSettlementItemCreateReq.java @@ -0,0 +1,86 @@ +package org.dromara.ctr.domain.dto; + +import jakarta.validation.constraints.NotBlank; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + * @author lilemy + * @date 2025-10-18 17:05 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class CtrContractProgressSettlementItemCreateReq { + + /** + * 编码 + */ + @NotBlank(message = "编码不能为空") + private String code; + + /** + * 合同清单名称 + */ + @NotBlank(message = "合同清单名称不能为空") + private String name; + + /** + * 计量单位 + */ + @NotBlank(message = "计量单位不能为空") + private String unit; + + /** + * 单价 + */ + private BigDecimal unitPrice; + + /** + * 含税单价 + */ + private BigDecimal taxUnitPrice; + + /** + * 本期结算数量 + */ + private BigDecimal currentQty; + + /** + * 本期结算百分比 + */ + private BigDecimal currentRate; + + /** + * 本期结算金额 + */ + private BigDecimal currentAmount; + + /** + * 本期结算不含税金额 + */ + private BigDecimal currentNoAmount; + + /** + * 本期审批数量 + */ + private BigDecimal currentApprovedQty; + + /** + * 本期审批金额 + */ + private BigDecimal currentApprovedAmount; + + /** + * 税率(%) + */ + private String taxRate; + + /** + * 备注 + */ + private String remark; +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/dto/CtrContractProgressSettlementItemUpdateReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/dto/CtrContractProgressSettlementItemUpdateReq.java new file mode 100644 index 00000000..397817b7 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/dto/CtrContractProgressSettlementItemUpdateReq.java @@ -0,0 +1,91 @@ +package org.dromara.ctr.domain.dto; + +import jakarta.validation.constraints.NotBlank; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + * @author lilemy + * @date 2025-10-18 17:39 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class CtrContractProgressSettlementItemUpdateReq { + + /** + * 主键ID + */ + private Long id; + + /** + * 编码 + */ + @NotBlank(message = "编码不能为空") + private String code; + + /** + * 合同清单名称 + */ + @NotBlank(message = "合同清单名称不能为空") + private String name; + + /** + * 计量单位 + */ + @NotBlank(message = "计量单位不能为空") + private String unit; + + /** + * 单价 + */ + private BigDecimal unitPrice; + + /** + * 含税单价 + */ + private BigDecimal taxUnitPrice; + + /** + * 本期结算数量 + */ + private BigDecimal currentQty; + + /** + * 本期结算百分比 + */ + private BigDecimal currentRate; + + /** + * 本期结算金额 + */ + private BigDecimal currentAmount; + + /** + * 本期结算不含税金额 + */ + private BigDecimal currentNoAmount; + + /** + * 本期审批数量 + */ + private BigDecimal currentApprovedQty; + + /** + * 本期审批金额 + */ + private BigDecimal currentApprovedAmount; + + /** + * 税率(%) + */ + private String taxRate; + + /** + * 备注 + */ + private String remark; +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/dto/CtrContractProgressSettlementUpdateReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/dto/CtrContractProgressSettlementUpdateReq.java new file mode 100644 index 00000000..48830249 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/dto/CtrContractProgressSettlementUpdateReq.java @@ -0,0 +1,157 @@ +package org.dromara.ctr.domain.dto; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.dromara.ctr.domain.CtrContractProgressSettlement; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.List; + +/** + * @author lilemy + * @date 2025-10-18 17:30 + */ +@Data +@AutoMapper(target = CtrContractProgressSettlement.class, reverseConvertGenerate = false) +public class CtrContractProgressSettlementUpdateReq implements Serializable { + + @Serial + private static final long serialVersionUID = -105855005415297131L; + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空") + private Long id; + + /** + * 所属部门 + */ + @NotNull(message = "所属部门不能为空") + private Long deptId; + + /** + * 单据编码 + */ + @NotBlank(message = "单据编码不能为空") + private String documentCode; + + /** + * 标题 + */ + @NotBlank(message = "标题不能为空") + private String title; + + /** + * 结算日期 + */ + @NotNull(message = "结算日期不能为空") + private LocalDate settlementDate; + + /** + * 合同编码 + */ + @NotBlank(message = "合同编码不能为空") + private String contractCode; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 统计周期 + */ + private String contractProgress; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 项目名称 + */ + private String projectName; + + /** + * 审批金额 + */ + @NotNull(message = "审批金额不能为空") + private BigDecimal approvalAmount; + + /** + * 计量开始日期 + */ + private LocalDate measureDateBegin; + + /** + * 计量结束日期 + */ + private LocalDate measureDateEnd; + + /** + * 结算单位(客户) + */ + private Long settlementUnit; + + /** + * 本期结算金额 + */ + private BigDecimal settlementMoney; + + /** + * 本期扣款金额 + */ + private BigDecimal deductionMoney; + + /** + * 本期奖励金额 + */ + private BigDecimal bonus; + + /** + * 合同金额 + */ + private BigDecimal contractAmount; + + /** + * 本次结算比例 + */ + private BigDecimal thisSettlementRatio; + + /** + * 支付条款 + */ + private Long paymentTerms; + + /** + * 多文件逗号分隔 + */ + private String fileId; + + /** + * 备注 + */ + private String remark; + + /** + * 合同内清单 + */ + private List inInventory; + + /** + * 变更增加清单 + */ + private List changeInventory; + + /** + * 合同外清单 + */ + private List outInventory; +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/dto/CtrSubcontractProgressSettlementCreateReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/dto/CtrSubcontractProgressSettlementCreateReq.java new file mode 100644 index 00000000..b8a0e392 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/dto/CtrSubcontractProgressSettlementCreateReq.java @@ -0,0 +1,130 @@ +package org.dromara.ctr.domain.dto; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.dromara.ctr.domain.CtrSubcontractProgressSettlement; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.List; + +/** + * @author lilemy + * @date 2025-10-18 19:14 + */ +@Data +@AutoMapper(target = CtrSubcontractProgressSettlement.class, reverseConvertGenerate = false) +public class CtrSubcontractProgressSettlementCreateReq implements Serializable { + + @Serial + private static final long serialVersionUID = 770553999547826460L; + + /** + * 单据编码 + */ + @NotBlank(message = "单据编码不能为空") + private String documentCode; + + /** + * 标题 + */ + @NotBlank(message = "标题不能为空") + private String title; + + /** + * 单据日期 + */ + @NotNull(message = "单据日期不能为空") + private LocalDate documentDate; + + /** + * 合同编码 + */ + @NotBlank(message = "合同编码不能为空") + private String contractCode; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 统计周期 + */ + private String contractProgress; + + /** + * 计量开始日期 + */ + private LocalDate measureDateBegin; + + /** + * 计量结束日期 + */ + private LocalDate measureDateEnd; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 项目名称 + */ + private String projectName; + + /** + * 审批金额 + */ + @NotNull(message = "审批金额不能为空") + private BigDecimal approvalAmount; + + /** + * 结算单位 + */ + private Long settlementUnit; + + /** + * 合同金额 + */ + private BigDecimal contractAmount; + + /** + * 本次结算比例 + */ + private BigDecimal currentSettlementRate; + + /** + * 文件ID + */ + private String fileId; + + /** + * 审核状态 + */ + private String auditStatus; + + /** + * 备注 + */ + private String remark; + + /** + * 合同内清单 + */ + private List inInventory; + + /** + * 变更增加清单 + */ + private List changeInventory; + + /** + * 合同外清单 + */ + private List outInventory; +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/dto/CtrSubcontractProgressSettlementItemCreateReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/dto/CtrSubcontractProgressSettlementItemCreateReq.java new file mode 100644 index 00000000..66d53895 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/dto/CtrSubcontractProgressSettlementItemCreateReq.java @@ -0,0 +1,115 @@ +package org.dromara.ctr.domain.dto; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; +import org.dromara.ctr.domain.CtrSubcontractProgressSettlementItem; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @author lilemy + * @date 2025-10-18 19:17 + */ +@Data +@AutoMapper(target = CtrSubcontractProgressSettlementItem.class, reverseConvertGenerate = false) +public class CtrSubcontractProgressSettlementItemCreateReq implements Serializable { + + @Serial + private static final long serialVersionUID = -7720839036718185218L; + + /** + * 编码 + */ + @NotBlank(message = "编码不能为空") + private String code; + + /** + * 合同清单名称 + */ + @NotBlank(message = "合同清单名称不能为空") + private String name; + + /** + * 计量单位 + */ + @NotBlank(message = "计量单位不能为空") + private String unit; + + /** + * 单价 + */ + private BigDecimal unitPrice; + + /** + * 含税单价 + */ + private BigDecimal taxUnitPrice; + + /** + * 本期结算数量 + */ + private BigDecimal currentQty; + + /** + * 本期结算百分比 + */ + private BigDecimal currentRate; + + /** + * 本期结算金额 + */ + private BigDecimal currentAmount; + + /** + * 本期结算不含税金额 + */ + private BigDecimal currentNoAmount; + + /** + * 本期审批数量 + */ + private BigDecimal currentApprovedQty; + + /** + * 本期审批金额 + */ + private BigDecimal currentApprovedAmount; + + /** + * 税率(%) + */ + private String taxRate; + + /** + * 税额 + */ + private String tax; + + /** + * WBS工作分解结构 + */ + private String wbs; + + /** + * CBS成本分解结构 + */ + private String cbs; + + /** + * CBS预算总额 + */ + private BigDecimal cbsBudgetTotal; + + /** + * CBS余额 + */ + private BigDecimal cbsBalance; + + /** + * 备注 + */ + private String remark; +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/dto/CtrSubcontractProgressSettlementItemUpdateReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/dto/CtrSubcontractProgressSettlementItemUpdateReq.java new file mode 100644 index 00000000..43912961 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/dto/CtrSubcontractProgressSettlementItemUpdateReq.java @@ -0,0 +1,123 @@ +package org.dromara.ctr.domain.dto; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.dromara.ctr.domain.CtrSubcontractProgressSettlementItem; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @author lilemy + * @date 2025-10-18 19:21 + */ +@Data +@AutoMapper(target = CtrSubcontractProgressSettlementItem.class, reverseConvertGenerate = false) +public class CtrSubcontractProgressSettlementItemUpdateReq implements Serializable { + + @Serial + private static final long serialVersionUID = 4319471696029509036L; + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空") + private Long id; + + /** + * 编码 + */ + @NotBlank(message = "编码不能为空") + private String code; + + /** + * 合同清单名称 + */ + @NotBlank(message = "合同清单名称不能为空") + private String name; + + /** + * 计量单位 + */ + @NotBlank(message = "计量单位不能为空") + private String unit; + + /** + * 单价 + */ + private BigDecimal unitPrice; + + /** + * 含税单价 + */ + private BigDecimal taxUnitPrice; + + /** + * 本期结算数量 + */ + private BigDecimal currentQty; + + /** + * 本期结算百分比 + */ + private BigDecimal currentRate; + + /** + * 本期结算金额 + */ + private BigDecimal currentAmount; + + /** + * 本期结算不含税金额 + */ + private BigDecimal currentNoAmount; + + /** + * 本期审批数量 + */ + private BigDecimal currentApprovedQty; + + /** + * 本期审批金额 + */ + private BigDecimal currentApprovedAmount; + + /** + * 税率(%) + */ + private String taxRate; + + /** + * 税额 + */ + private String tax; + + /** + * WBS工作分解结构 + */ + private String wbs; + + /** + * CBS成本分解结构 + */ + private String cbs; + + /** + * CBS预算总额 + */ + private BigDecimal cbsBudgetTotal; + + /** + * CBS余额 + */ + private BigDecimal cbsBalance; + + /** + * 备注 + */ + private String remark; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/dto/CtrSubcontractProgressSettlementUpdateReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/dto/CtrSubcontractProgressSettlementUpdateReq.java new file mode 100644 index 00000000..57d77232 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/dto/CtrSubcontractProgressSettlementUpdateReq.java @@ -0,0 +1,136 @@ +package org.dromara.ctr.domain.dto; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.dromara.ctr.domain.CtrSubcontractProgressSettlement; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.List; + +/** + * @author lilemy + * @date 2025-10-18 19:20 + */ +@Data +@AutoMapper(target = CtrSubcontractProgressSettlement.class, reverseConvertGenerate = false) +public class CtrSubcontractProgressSettlementUpdateReq implements Serializable { + + @Serial + private static final long serialVersionUID = -7099475527833822253L; + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空") + private Long id; + + /** + * 单据编码 + */ + @NotBlank(message = "单据编码不能为空") + private String documentCode; + + /** + * 标题 + */ + @NotBlank(message = "标题不能为空") + private String title; + + /** + * 单据日期 + */ + @NotNull(message = "单据日期不能为空") + private LocalDate documentDate; + + /** + * 合同编码 + */ + @NotBlank(message = "合同编码不能为空") + private String contractCode; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 统计周期 + */ + private String contractProgress; + + /** + * 计量开始日期 + */ + private LocalDate measureDateBegin; + + /** + * 计量结束日期 + */ + private LocalDate measureDateEnd; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 项目名称 + */ + private String projectName; + + /** + * 审批金额 + */ + @NotNull(message = "审批金额不能为空") + private BigDecimal approvalAmount; + + /** + * 结算单位 + */ + private Long settlementUnit; + + /** + * 合同金额 + */ + private BigDecimal contractAmount; + + /** + * 本次结算比例 + */ + private BigDecimal currentSettlementRate; + + /** + * 文件ID + */ + private String fileId; + + /** + * 审核状态 + */ + private String auditStatus; + + /** + * 备注 + */ + private String remark; + + /** + * 合同内清单 + */ + private List inInventory; + + /** + * 变更增加清单 + */ + private List changeInventory; + + /** + * 合同外清单 + */ + private List outInventory; +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/vo/CtrContractProgressSettlementItemVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/vo/CtrContractProgressSettlementItemVo.java new file mode 100644 index 00000000..9fbcf61c --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/vo/CtrContractProgressSettlementItemVo.java @@ -0,0 +1,130 @@ +package org.dromara.ctr.domain.vo; + +import java.math.BigDecimal; +import org.dromara.ctr.domain.CtrContractProgressSettlementItem; +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; + + + +/** + * 承包合同进度结算清单视图对象 ctr_contract_progress_settlement_item + * + * @author lilemy + * @date 2025-10-18 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = CtrContractProgressSettlementItem.class) +public class CtrContractProgressSettlementItemVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 结算单ID + */ + @ExcelProperty(value = "结算单ID") + private Long settlementId; + + /** + * 类型(1合同内清单 2变更增加清单 3合同外清单) + */ + @ExcelProperty(value = "类型(1合同内清单 2变更增加清单 3合同外清单)") + private String type; + + /** + * 编码 + */ + @ExcelProperty(value = "编码") + private String code; + + /** + * 合同清单名称 + */ + @ExcelProperty(value = "合同清单名称") + private String name; + + /** + * 计量单位 + */ + @ExcelProperty(value = "计量单位") + private String unit; + + /** + * 单价 + */ + @ExcelProperty(value = "单价") + private BigDecimal unitPrice; + + /** + * 含税单价 + */ + @ExcelProperty(value = "含税单价") + private BigDecimal taxUnitPrice; + + /** + * 本期结算数量 + */ + @ExcelProperty(value = "本期结算数量") + private BigDecimal currentQty; + + /** + * 本期结算百分比 + */ + @ExcelProperty(value = "本期结算百分比") + private BigDecimal currentRate; + + /** + * 本期结算金额 + */ + @ExcelProperty(value = "本期结算金额") + private BigDecimal currentAmount; + + /** + * 本期结算不含税金额 + */ + @ExcelProperty(value = "本期结算不含税金额") + private BigDecimal currentNoAmount; + + /** + * 本期审批数量 + */ + @ExcelProperty(value = "本期审批数量") + private BigDecimal currentApprovedQty; + + /** + * 本期审批金额 + */ + @ExcelProperty(value = "本期审批金额") + private BigDecimal currentApprovedAmount; + + /** + * 税率(%) + */ + @ExcelProperty(value = "税率", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "xzd_tax_rate") + private String taxRate; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/vo/CtrContractProgressSettlementVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/vo/CtrContractProgressSettlementVo.java new file mode 100644 index 00000000..81851e95 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/vo/CtrContractProgressSettlementVo.java @@ -0,0 +1,180 @@ +package org.dromara.ctr.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; +import org.dromara.ctr.domain.CtrContractProgressSettlement; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.List; + + +/** + * 承包合同进度结算视图对象 ctr_contract_progress_settlement + * + * @author lilemy + * @date 2025-10-18 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = CtrContractProgressSettlement.class) +public class CtrContractProgressSettlementVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 所属部门 + */ + @ExcelProperty(value = "所属部门") + private Long deptId; + + /** + * 单据编码 + */ + @ExcelProperty(value = "单据编码") + private String documentCode; + + /** + * 标题 + */ + @ExcelProperty(value = "标题") + private String title; + + /** + * 结算日期 + */ + @ExcelProperty(value = "结算日期") + private LocalDate settlementDate; + + /** + * 合同编码 + */ + @ExcelProperty(value = "合同编码") + private String contractCode; + + /** + * 合同名称 + */ + @ExcelProperty(value = "合同名称") + private String contractName; + + /** + * 统计周期 + */ + @ExcelProperty(value = "统计周期") + private String contractProgress; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 项目名称 + */ + @ExcelProperty(value = "项目名称") + @Translation(type = TransConstant.PROJECT_ID_TO_NAME, mapper = "projectId") + private String projectName; + + /** + * 审批金额 + */ + @ExcelProperty(value = "审批金额") + private BigDecimal approvalAmount; + + /** + * 计量开始日期 + */ + @ExcelProperty(value = "计量开始日期") + private LocalDate measureDateBegin; + + /** + * 计量结束日期 + */ + @ExcelProperty(value = "计量结束日期") + private LocalDate measureDateEnd; + + /** + * 结算单位(客户) + */ + @ExcelProperty(value = "结算单位(客户)") + private Long settlementUnit; + + /** + * 本期结算金额 + */ + @ExcelProperty(value = "本期结算金额") + private BigDecimal settlementMoney; + + /** + * 本期扣款金额 + */ + @ExcelProperty(value = "本期扣款金额") + private BigDecimal deductionMoney; + + /** + * 本期奖励金额 + */ + @ExcelProperty(value = "本期奖励金额") + private BigDecimal bonus; + + /** + * 合同金额 + */ + @ExcelProperty(value = "合同金额") + private BigDecimal contractAmount; + + /** + * 本次结算比例 + */ + @ExcelProperty(value = "本次结算比例") + private BigDecimal thisSettlementRatio; + + /** + * 支付条款 + */ + @ExcelProperty(value = "支付条款") + private Long paymentTerms; + + /** + * 多文件逗号分隔 + */ + @ExcelProperty(value = "多文件逗号分隔") + private String fileId; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 合同内清单 + */ + private List inInventory; + + /** + * 变更增加清单 + */ + private List changeInventory; + + /** + * 合同外清单 + */ + private List outInventory; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/vo/CtrSubcontractProgressSettlementItemVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/vo/CtrSubcontractProgressSettlementItemVo.java new file mode 100644 index 00000000..e8e612fb --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/vo/CtrSubcontractProgressSettlementItemVo.java @@ -0,0 +1,160 @@ +package org.dromara.ctr.domain.vo; + +import java.math.BigDecimal; +import org.dromara.ctr.domain.CtrSubcontractProgressSettlementItem; +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; + + + +/** + * 分包合同进度结算清单视图对象 ctr_subcontract_progress_settlement_item + * + * @author lilemy + * @date 2025-10-18 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = CtrSubcontractProgressSettlementItem.class) +public class CtrSubcontractProgressSettlementItemVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 结算单ID + */ + @ExcelProperty(value = "结算单ID") + private Long settlementId; + + /** + * 类型(1合同内清单 2变更增加清单 3合同外清单) + */ + @ExcelProperty(value = "类型(1合同内清单 2变更增加清单 3合同外清单)") + private String type; + + /** + * 编码 + */ + @ExcelProperty(value = "编码") + private String code; + + /** + * 合同清单名称 + */ + @ExcelProperty(value = "合同清单名称") + private String name; + + /** + * 计量单位 + */ + @ExcelProperty(value = "计量单位") + private String unit; + + /** + * 单价 + */ + @ExcelProperty(value = "单价") + private BigDecimal unitPrice; + + /** + * 含税单价 + */ + @ExcelProperty(value = "含税单价") + private BigDecimal taxUnitPrice; + + /** + * 本期结算数量 + */ + @ExcelProperty(value = "本期结算数量") + private BigDecimal currentQty; + + /** + * 本期结算百分比 + */ + @ExcelProperty(value = "本期结算百分比") + private BigDecimal currentRate; + + /** + * 本期结算金额 + */ + @ExcelProperty(value = "本期结算金额") + private BigDecimal currentAmount; + + /** + * 本期结算不含税金额 + */ + @ExcelProperty(value = "本期结算不含税金额") + private BigDecimal currentNoAmount; + + /** + * 本期审批数量 + */ + @ExcelProperty(value = "本期审批数量") + private BigDecimal currentApprovedQty; + + /** + * 本期审批金额 + */ + @ExcelProperty(value = "本期审批金额") + private BigDecimal currentApprovedAmount; + + /** + * 税率(%) + */ + @ExcelProperty(value = "税率", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "xzd_tax_rate") + private String taxRate; + + /** + * 税额 + */ + @ExcelProperty(value = "税额") + private String tax; + + /** + * WBS工作分解结构 + */ + @ExcelProperty(value = "WBS工作分解结构") + private String wbs; + + /** + * CBS成本分解结构 + */ + @ExcelProperty(value = "CBS成本分解结构") + private String cbs; + + /** + * CBS预算总额 + */ + @ExcelProperty(value = "CBS预算总额") + private BigDecimal cbsBudgetTotal; + + /** + * CBS余额 + */ + @ExcelProperty(value = "CBS余额") + private BigDecimal cbsBalance; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/vo/CtrSubcontractProgressSettlementVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/vo/CtrSubcontractProgressSettlementVo.java new file mode 100644 index 00000000..32ec34bb --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/domain/vo/CtrSubcontractProgressSettlementVo.java @@ -0,0 +1,153 @@ +package org.dromara.ctr.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.ctr.domain.CtrSubcontractProgressSettlement; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.List; + + +/** + * 分包合同进度结算视图对象 ctr_subcontract_progress_settlement + * + * @author lilemy + * @date 2025-10-18 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = CtrSubcontractProgressSettlement.class) +public class CtrSubcontractProgressSettlementVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 单据编码 + */ + @ExcelProperty(value = "单据编码") + private String documentCode; + + /** + * 标题 + */ + @ExcelProperty(value = "标题") + private String title; + + /** + * 单据日期 + */ + @ExcelProperty(value = "单据日期") + private LocalDate documentDate; + + /** + * 合同编码 + */ + @ExcelProperty(value = "合同编码") + private String contractCode; + + /** + * 合同名称 + */ + @ExcelProperty(value = "合同名称") + private String contractName; + + /** + * 统计周期 + */ + @ExcelProperty(value = "统计周期") + private String contractProgress; + + /** + * 计量开始日期 + */ + @ExcelProperty(value = "计量开始日期") + private LocalDate measureDateBegin; + + /** + * 计量结束日期 + */ + @ExcelProperty(value = "计量结束日期") + private LocalDate measureDateEnd; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 项目名称 + */ + @ExcelProperty(value = "项目名称") + private String projectName; + + /** + * 审批金额 + */ + @ExcelProperty(value = "审批金额") + private BigDecimal approvalAmount; + + /** + * 结算单位 + */ + @ExcelProperty(value = "结算单位") + private Long settlementUnit; + + /** + * 合同金额 + */ + @ExcelProperty(value = "合同金额") + private BigDecimal contractAmount; + + /** + * 本次结算比例 + */ + @ExcelProperty(value = "本次结算比例") + private BigDecimal currentSettlementRate; + + /** + * 文件ID + */ + @ExcelProperty(value = "文件ID") + private String fileId; + + /** + * 审核状态 + */ + @ExcelProperty(value = "审核状态") + private String auditStatus; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 合同内清单 + */ + private List inInventory; + + /** + * 变更增加清单 + */ + private List changeInventory; + + /** + * 合同外清单 + */ + private List outInventory; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/mapper/CtrContractProgressSettlementItemMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/mapper/CtrContractProgressSettlementItemMapper.java new file mode 100644 index 00000000..310c3d20 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/mapper/CtrContractProgressSettlementItemMapper.java @@ -0,0 +1,15 @@ +package org.dromara.ctr.mapper; + +import org.dromara.ctr.domain.CtrContractProgressSettlementItem; +import org.dromara.ctr.domain.vo.CtrContractProgressSettlementItemVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 承包合同进度结算清单Mapper接口 + * + * @author lilemy + * @date 2025-10-18 + */ +public interface CtrContractProgressSettlementItemMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/mapper/CtrContractProgressSettlementMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/mapper/CtrContractProgressSettlementMapper.java new file mode 100644 index 00000000..681646a6 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/mapper/CtrContractProgressSettlementMapper.java @@ -0,0 +1,15 @@ +package org.dromara.ctr.mapper; + +import org.dromara.ctr.domain.CtrContractProgressSettlement; +import org.dromara.ctr.domain.vo.CtrContractProgressSettlementVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 承包合同进度结算Mapper接口 + * + * @author lilemy + * @date 2025-10-18 + */ +public interface CtrContractProgressSettlementMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/mapper/CtrSubcontractProgressSettlementItemMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/mapper/CtrSubcontractProgressSettlementItemMapper.java new file mode 100644 index 00000000..25027590 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/mapper/CtrSubcontractProgressSettlementItemMapper.java @@ -0,0 +1,15 @@ +package org.dromara.ctr.mapper; + +import org.dromara.ctr.domain.CtrSubcontractProgressSettlementItem; +import org.dromara.ctr.domain.vo.CtrSubcontractProgressSettlementItemVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 分包合同进度结算清单Mapper接口 + * + * @author lilemy + * @date 2025-10-18 + */ +public interface CtrSubcontractProgressSettlementItemMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/mapper/CtrSubcontractProgressSettlementMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/mapper/CtrSubcontractProgressSettlementMapper.java new file mode 100644 index 00000000..15d27b4d --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/mapper/CtrSubcontractProgressSettlementMapper.java @@ -0,0 +1,15 @@ +package org.dromara.ctr.mapper; + +import org.dromara.ctr.domain.CtrSubcontractProgressSettlement; +import org.dromara.ctr.domain.vo.CtrSubcontractProgressSettlementVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 分包合同进度结算Mapper接口 + * + * @author lilemy + * @date 2025-10-18 + */ +public interface CtrSubcontractProgressSettlementMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/service/ICtrContractProgressSettlementItemService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/service/ICtrContractProgressSettlementItemService.java new file mode 100644 index 00000000..d1d45600 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/service/ICtrContractProgressSettlementItemService.java @@ -0,0 +1,70 @@ +package org.dromara.ctr.service; + +import org.dromara.ctr.domain.vo.CtrContractProgressSettlementItemVo; +import org.dromara.ctr.domain.bo.CtrContractProgressSettlementItemBo; +import org.dromara.ctr.domain.CtrContractProgressSettlementItem; +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 lilemy + * @date 2025-10-18 + */ +public interface ICtrContractProgressSettlementItemService extends IService{ + + /** + * 查询承包合同进度结算清单 + * + * @param id 主键 + * @return 承包合同进度结算清单 + */ + CtrContractProgressSettlementItemVo queryById(Long id); + + /** + * 分页查询承包合同进度结算清单列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 承包合同进度结算清单分页列表 + */ + TableDataInfo queryPageList(CtrContractProgressSettlementItemBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的承包合同进度结算清单列表 + * + * @param bo 查询条件 + * @return 承包合同进度结算清单列表 + */ + List queryList(CtrContractProgressSettlementItemBo bo); + + /** + * 新增承包合同进度结算清单 + * + * @param bo 承包合同进度结算清单 + * @return 是否新增成功 + */ + Boolean insertByBo(CtrContractProgressSettlementItemBo bo); + + /** + * 修改承包合同进度结算清单 + * + * @param bo 承包合同进度结算清单 + * @return 是否修改成功 + */ + Boolean updateByBo(CtrContractProgressSettlementItemBo 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/ctr/service/ICtrContractProgressSettlementService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/service/ICtrContractProgressSettlementService.java new file mode 100644 index 00000000..18e95e79 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/service/ICtrContractProgressSettlementService.java @@ -0,0 +1,72 @@ +package org.dromara.ctr.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.ctr.domain.CtrContractProgressSettlement; +import org.dromara.ctr.domain.bo.CtrContractProgressSettlementBo; +import org.dromara.ctr.domain.dto.CtrContractProgressSettlementCreateReq; +import org.dromara.ctr.domain.dto.CtrContractProgressSettlementUpdateReq; +import org.dromara.ctr.domain.vo.CtrContractProgressSettlementVo; + +import java.util.Collection; +import java.util.List; + +/** + * 承包合同进度结算Service接口 + * + * @author lilemy + * @date 2025-10-18 + */ +public interface ICtrContractProgressSettlementService extends IService { + + /** + * 查询承包合同进度结算 + * + * @param id 主键 + * @return 承包合同进度结算 + */ + CtrContractProgressSettlementVo queryById(Long id); + + /** + * 分页查询承包合同进度结算列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 承包合同进度结算分页列表 + */ + TableDataInfo queryPageList(CtrContractProgressSettlementBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的承包合同进度结算列表 + * + * @param bo 查询条件 + * @return 承包合同进度结算列表 + */ + List queryList(CtrContractProgressSettlementBo bo); + + /** + * 新增承包合同进度结算 + * + * @param req 承包合同进度结算 + * @return 是否新增成功 + */ + Boolean insertByBo(CtrContractProgressSettlementCreateReq req); + + /** + * 修改承包合同进度结算 + * + * @param req 承包合同进度结算 + * @return 是否修改成功 + */ + Boolean updateByBo(CtrContractProgressSettlementUpdateReq req); + + /** + * 校验并批量删除承包合同进度结算信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/service/ICtrSubcontractProgressSettlementItemService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/service/ICtrSubcontractProgressSettlementItemService.java new file mode 100644 index 00000000..5c6d8705 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/service/ICtrSubcontractProgressSettlementItemService.java @@ -0,0 +1,70 @@ +package org.dromara.ctr.service; + +import org.dromara.ctr.domain.vo.CtrSubcontractProgressSettlementItemVo; +import org.dromara.ctr.domain.bo.CtrSubcontractProgressSettlementItemBo; +import org.dromara.ctr.domain.CtrSubcontractProgressSettlementItem; +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 lilemy + * @date 2025-10-18 + */ +public interface ICtrSubcontractProgressSettlementItemService extends IService{ + + /** + * 查询分包合同进度结算清单 + * + * @param id 主键 + * @return 分包合同进度结算清单 + */ + CtrSubcontractProgressSettlementItemVo queryById(Long id); + + /** + * 分页查询分包合同进度结算清单列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 分包合同进度结算清单分页列表 + */ + TableDataInfo queryPageList(CtrSubcontractProgressSettlementItemBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的分包合同进度结算清单列表 + * + * @param bo 查询条件 + * @return 分包合同进度结算清单列表 + */ + List queryList(CtrSubcontractProgressSettlementItemBo bo); + + /** + * 新增分包合同进度结算清单 + * + * @param bo 分包合同进度结算清单 + * @return 是否新增成功 + */ + Boolean insertByBo(CtrSubcontractProgressSettlementItemBo bo); + + /** + * 修改分包合同进度结算清单 + * + * @param bo 分包合同进度结算清单 + * @return 是否修改成功 + */ + Boolean updateByBo(CtrSubcontractProgressSettlementItemBo 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/ctr/service/ICtrSubcontractProgressSettlementService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/service/ICtrSubcontractProgressSettlementService.java new file mode 100644 index 00000000..2eb56019 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/service/ICtrSubcontractProgressSettlementService.java @@ -0,0 +1,72 @@ +package org.dromara.ctr.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.ctr.domain.CtrSubcontractProgressSettlement; +import org.dromara.ctr.domain.bo.CtrSubcontractProgressSettlementBo; +import org.dromara.ctr.domain.dto.CtrSubcontractProgressSettlementCreateReq; +import org.dromara.ctr.domain.dto.CtrSubcontractProgressSettlementUpdateReq; +import org.dromara.ctr.domain.vo.CtrSubcontractProgressSettlementVo; + +import java.util.Collection; +import java.util.List; + +/** + * 分包合同进度结算Service接口 + * + * @author lilemy + * @date 2025-10-18 + */ +public interface ICtrSubcontractProgressSettlementService extends IService { + + /** + * 查询分包合同进度结算 + * + * @param id 主键 + * @return 分包合同进度结算 + */ + CtrSubcontractProgressSettlementVo queryById(Long id); + + /** + * 分页查询分包合同进度结算列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 分包合同进度结算分页列表 + */ + TableDataInfo queryPageList(CtrSubcontractProgressSettlementBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的分包合同进度结算列表 + * + * @param bo 查询条件 + * @return 分包合同进度结算列表 + */ + List queryList(CtrSubcontractProgressSettlementBo bo); + + /** + * 新增分包合同进度结算 + * + * @param req 分包合同进度结算 + * @return 是否新增成功 + */ + Boolean insertByBo(CtrSubcontractProgressSettlementCreateReq req); + + /** + * 修改分包合同进度结算 + * + * @param req 分包合同进度结算 + * @return 是否修改成功 + */ + Boolean updateByBo(CtrSubcontractProgressSettlementUpdateReq req); + + /** + * 校验并批量删除分包合同进度结算信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/service/impl/CtrContractProgressSettlementItemServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/service/impl/CtrContractProgressSettlementItemServiceImpl.java new file mode 100644 index 00000000..d8f391be --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/service/impl/CtrContractProgressSettlementItemServiceImpl.java @@ -0,0 +1,142 @@ +package org.dromara.ctr.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.ctr.domain.bo.CtrContractProgressSettlementItemBo; +import org.dromara.ctr.domain.vo.CtrContractProgressSettlementItemVo; +import org.dromara.ctr.domain.CtrContractProgressSettlementItem; +import org.dromara.ctr.mapper.CtrContractProgressSettlementItemMapper; +import org.dromara.ctr.service.ICtrContractProgressSettlementItemService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 承包合同进度结算清单Service业务层处理 + * + * @author lilemy + * @date 2025-10-18 + */ +@RequiredArgsConstructor +@Service +public class CtrContractProgressSettlementItemServiceImpl extends ServiceImpl implements ICtrContractProgressSettlementItemService { + + /** + * 查询承包合同进度结算清单 + * + * @param id 主键 + * @return 承包合同进度结算清单 + */ + @Override + public CtrContractProgressSettlementItemVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询承包合同进度结算清单列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 承包合同进度结算清单分页列表 + */ + @Override + public TableDataInfo queryPageList(CtrContractProgressSettlementItemBo 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(CtrContractProgressSettlementItemBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(CtrContractProgressSettlementItemBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(CtrContractProgressSettlementItem::getId); + lqw.eq(bo.getSettlementId() != null, CtrContractProgressSettlementItem::getSettlementId, bo.getSettlementId()); + lqw.eq(StringUtils.isNotBlank(bo.getType()), CtrContractProgressSettlementItem::getType, bo.getType()); + lqw.eq(StringUtils.isNotBlank(bo.getCode()), CtrContractProgressSettlementItem::getCode, bo.getCode()); + lqw.like(StringUtils.isNotBlank(bo.getName()), CtrContractProgressSettlementItem::getName, bo.getName()); + lqw.eq(StringUtils.isNotBlank(bo.getUnit()), CtrContractProgressSettlementItem::getUnit, bo.getUnit()); + lqw.eq(bo.getUnitPrice() != null, CtrContractProgressSettlementItem::getUnitPrice, bo.getUnitPrice()); + lqw.eq(bo.getTaxUnitPrice() != null, CtrContractProgressSettlementItem::getTaxUnitPrice, bo.getTaxUnitPrice()); + lqw.eq(bo.getCurrentQty() != null, CtrContractProgressSettlementItem::getCurrentQty, bo.getCurrentQty()); + lqw.eq(bo.getCurrentRate() != null, CtrContractProgressSettlementItem::getCurrentRate, bo.getCurrentRate()); + lqw.eq(bo.getCurrentAmount() != null, CtrContractProgressSettlementItem::getCurrentAmount, bo.getCurrentAmount()); + lqw.eq(bo.getCurrentNoAmount() != null, CtrContractProgressSettlementItem::getCurrentNoAmount, bo.getCurrentNoAmount()); + lqw.eq(bo.getCurrentApprovedQty() != null, CtrContractProgressSettlementItem::getCurrentApprovedQty, bo.getCurrentApprovedQty()); + lqw.eq(bo.getCurrentApprovedAmount() != null, CtrContractProgressSettlementItem::getCurrentApprovedAmount, bo.getCurrentApprovedAmount()); + lqw.eq(StringUtils.isNotBlank(bo.getTaxRate()), CtrContractProgressSettlementItem::getTaxRate, bo.getTaxRate()); + return lqw; + } + + /** + * 新增承包合同进度结算清单 + * + * @param bo 承包合同进度结算清单 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(CtrContractProgressSettlementItemBo bo) { + CtrContractProgressSettlementItem add = MapstructUtils.convert(bo, CtrContractProgressSettlementItem.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改承包合同进度结算清单 + * + * @param bo 承包合同进度结算清单 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(CtrContractProgressSettlementItemBo bo) { + CtrContractProgressSettlementItem update = MapstructUtils.convert(bo, CtrContractProgressSettlementItem.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(CtrContractProgressSettlementItem 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/ctr/service/impl/CtrContractProgressSettlementServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/service/impl/CtrContractProgressSettlementServiceImpl.java new file mode 100644 index 00000000..aebb80ec --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/service/impl/CtrContractProgressSettlementServiceImpl.java @@ -0,0 +1,269 @@ +package org.dromara.ctr.service.impl; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +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.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.ctr.domain.CtrContractProgressSettlement; +import org.dromara.ctr.domain.CtrContractProgressSettlementItem; +import org.dromara.ctr.domain.bo.CtrContractProgressSettlementBo; +import org.dromara.ctr.domain.dto.CtrContractProgressSettlementCreateReq; +import org.dromara.ctr.domain.dto.CtrContractProgressSettlementItemCreateReq; +import org.dromara.ctr.domain.dto.CtrContractProgressSettlementItemUpdateReq; +import org.dromara.ctr.domain.dto.CtrContractProgressSettlementUpdateReq; +import org.dromara.ctr.domain.vo.CtrContractProgressSettlementItemVo; +import org.dromara.ctr.domain.vo.CtrContractProgressSettlementVo; +import org.dromara.ctr.mapper.CtrContractProgressSettlementMapper; +import org.dromara.ctr.service.ICtrContractProgressSettlementItemService; +import org.dromara.ctr.service.ICtrContractProgressSettlementService; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 承包合同进度结算Service业务层处理 + * + * @author lilemy + * @date 2025-10-18 + */ +@RequiredArgsConstructor +@Service +public class CtrContractProgressSettlementServiceImpl extends ServiceImpl + implements ICtrContractProgressSettlementService { + + private final ICtrContractProgressSettlementItemService contractProgressSettlementItemService; + + /** + * 查询承包合同进度结算 + * + * @param id 主键 + * @return 承包合同进度结算 + */ + @Override + public CtrContractProgressSettlementVo queryById(Long id) { + CtrContractProgressSettlementVo vo = baseMapper.selectVoById(id); + List list = contractProgressSettlementItemService.lambdaQuery() + .eq(CtrContractProgressSettlementItem::getSettlementId, id) + .list(); + if (CollUtil.isNotEmpty(list)) { + List listVo = list.stream().map(item -> + MapstructUtils.convert(item, CtrContractProgressSettlementItemVo.class)) + .toList(); + Map> map = listVo.stream() + .collect(Collectors.groupingBy(CtrContractProgressSettlementItemVo::getType)); + vo.setInInventory(map.getOrDefault("1", new ArrayList<>())); + vo.setChangeInventory(map.getOrDefault("2", new ArrayList<>())); + vo.setOutInventory(map.getOrDefault("3", new ArrayList<>())); + } + return vo; + } + + /** + * 分页查询承包合同进度结算列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 承包合同进度结算分页列表 + */ + @Override + public TableDataInfo queryPageList(CtrContractProgressSettlementBo 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(CtrContractProgressSettlementBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(CtrContractProgressSettlementBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(CtrContractProgressSettlement::getId); + lqw.eq(bo.getDeptId() != null, CtrContractProgressSettlement::getDeptId, bo.getDeptId()); + lqw.like(StringUtils.isNotBlank(bo.getDocumentCode()), CtrContractProgressSettlement::getDocumentCode, bo.getDocumentCode()); + lqw.eq(StringUtils.isNotBlank(bo.getTitle()), CtrContractProgressSettlement::getTitle, bo.getTitle()); + lqw.eq(bo.getSettlementDate() != null, CtrContractProgressSettlement::getSettlementDate, bo.getSettlementDate()); + lqw.eq(StringUtils.isNotBlank(bo.getContractCode()), CtrContractProgressSettlement::getContractCode, bo.getContractCode()); + lqw.like(StringUtils.isNotBlank(bo.getContractName()), CtrContractProgressSettlement::getContractName, bo.getContractName()); + lqw.eq(StringUtils.isNotBlank(bo.getContractProgress()), CtrContractProgressSettlement::getContractProgress, bo.getContractProgress()); + lqw.eq(bo.getProjectId() != null, CtrContractProgressSettlement::getProjectId, bo.getProjectId()); + lqw.like(StringUtils.isNotBlank(bo.getProjectName()), CtrContractProgressSettlement::getProjectName, bo.getProjectName()); + lqw.eq(bo.getApprovalAmount() != null, CtrContractProgressSettlement::getApprovalAmount, bo.getApprovalAmount()); + lqw.eq(bo.getMeasureDateBegin() != null, CtrContractProgressSettlement::getMeasureDateBegin, bo.getMeasureDateBegin()); + lqw.eq(bo.getMeasureDateEnd() != null, CtrContractProgressSettlement::getMeasureDateEnd, bo.getMeasureDateEnd()); + lqw.eq(bo.getSettlementUnit() != null, CtrContractProgressSettlement::getSettlementUnit, bo.getSettlementUnit()); + lqw.eq(bo.getSettlementMoney() != null, CtrContractProgressSettlement::getSettlementMoney, bo.getSettlementMoney()); + lqw.eq(bo.getDeductionMoney() != null, CtrContractProgressSettlement::getDeductionMoney, bo.getDeductionMoney()); + lqw.eq(bo.getBonus() != null, CtrContractProgressSettlement::getBonus, bo.getBonus()); + lqw.eq(bo.getContractAmount() != null, CtrContractProgressSettlement::getContractAmount, bo.getContractAmount()); + lqw.eq(bo.getThisSettlementRatio() != null, CtrContractProgressSettlement::getThisSettlementRatio, bo.getThisSettlementRatio()); + lqw.eq(bo.getPaymentTerms() != null, CtrContractProgressSettlement::getPaymentTerms, bo.getPaymentTerms()); + lqw.eq(StringUtils.isNotBlank(bo.getFileId()), CtrContractProgressSettlement::getFileId, bo.getFileId()); + return lqw; + } + + /** + * 新增承包合同进度结算 + * + * @param req 承包合同进度结算 + * @return 是否新增成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean insertByBo(CtrContractProgressSettlementCreateReq req) { + CtrContractProgressSettlement add = MapstructUtils.convert(req, CtrContractProgressSettlement.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + Long id = add.getId(); + List inInventory = req.getInInventory(); + List changeInventory = req.getChangeInventory(); + List outInventory = req.getOutInventory(); + List itemList = new ArrayList<>(); + itemList.addAll(inInventory.stream().map(r -> { + CtrContractProgressSettlementItem item = new CtrContractProgressSettlementItem(); + item.setSettlementId(id); + item.setType("1"); + BeanUtils.copyProperties(r, item); + return item; + }).toList()); + itemList.addAll(changeInventory.stream().map(r -> { + CtrContractProgressSettlementItem item = new CtrContractProgressSettlementItem(); + item.setSettlementId(id); + item.setType("2"); + BeanUtils.copyProperties(r, item); + return item; + }).toList()); + itemList.addAll(outInventory.stream().map(r -> { + CtrContractProgressSettlementItem item = new CtrContractProgressSettlementItem(); + item.setSettlementId(id); + item.setType("3"); + BeanUtils.copyProperties(r, item); + return item; + }).toList()); + if (CollUtil.isNotEmpty(itemList)) { + boolean saveBatch = contractProgressSettlementItemService.saveBatch(itemList); + if (!saveBatch) { + throw new ServiceException("保存承包合同进度结算明细失败"); + } + } + } + return flag; + } + + /** + * 修改承包合同进度结算 + * + * @param req 承包合同进度结算 + * @return 是否修改成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean updateByBo(CtrContractProgressSettlementUpdateReq req) { + CtrContractProgressSettlement update = MapstructUtils.convert(req, CtrContractProgressSettlement.class); + validEntityBeforeSave(update); + Long id = req.getId(); + // 删除旧数据 + List oldList = contractProgressSettlementItemService.lambdaQuery() + .eq(CtrContractProgressSettlementItem::getSettlementId, id) + .list(); + if (CollUtil.isNotEmpty(oldList)) { + boolean deleteBatch = contractProgressSettlementItemService.removeByIds(oldList); + if (!deleteBatch) { + throw new ServiceException("删除承包合同进度结算明细失败"); + } + } + // 新增子数据 + List inInventory = req.getInInventory(); + List changeInventory = req.getChangeInventory(); + List outInventory = req.getOutInventory(); + List itemList = new ArrayList<>(); + itemList.addAll(inInventory.stream().map(r -> { + CtrContractProgressSettlementItem item = new CtrContractProgressSettlementItem(); + item.setSettlementId(id); + item.setType("1"); + BeanUtils.copyProperties(r, item); + return item; + }).toList()); + itemList.addAll(changeInventory.stream().map(r -> { + CtrContractProgressSettlementItem item = new CtrContractProgressSettlementItem(); + item.setSettlementId(id); + item.setType("2"); + BeanUtils.copyProperties(r, item); + return item; + }).toList()); + itemList.addAll(outInventory.stream().map(r -> { + CtrContractProgressSettlementItem item = new CtrContractProgressSettlementItem(); + item.setSettlementId(id); + item.setType("3"); + BeanUtils.copyProperties(r, item); + return item; + }).toList()); + if (CollUtil.isNotEmpty(itemList)) { + boolean saveBatch = contractProgressSettlementItemService.saveBatch(itemList); + if (!saveBatch) { + throw new ServiceException("保存承包合同进度结算明细失败"); + } + } + // 保存主数据 + boolean b = baseMapper.updateById(update) > 0; + if (!b) { + throw new ServiceException("修改承包合同进度结算失败"); + } + return true; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(CtrContractProgressSettlement entity) { + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除承包合同进度结算信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + //TODO 做一些业务上的校验,判断是否需要校验 + } + // 删除关联数据 + List list = contractProgressSettlementItemService.lambdaQuery() + .in(CtrContractProgressSettlementItem::getSettlementId, ids) + .list(); + if (CollUtil.isNotEmpty(list)) { + boolean deleteBatch = contractProgressSettlementItemService.removeByIds(list); + if (!deleteBatch) { + throw new ServiceException("删除承包合同进度结算明细失败"); + } + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/service/impl/CtrSubcontractProgressSettlementItemServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/service/impl/CtrSubcontractProgressSettlementItemServiceImpl.java new file mode 100644 index 00000000..834657d3 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/service/impl/CtrSubcontractProgressSettlementItemServiceImpl.java @@ -0,0 +1,150 @@ +package org.dromara.ctr.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.ctr.domain.CtrSubcontractProgressSettlementItem; +import org.dromara.ctr.domain.bo.CtrSubcontractProgressSettlementItemBo; +import org.dromara.ctr.domain.vo.CtrSubcontractProgressSettlementItemVo; +import org.dromara.ctr.mapper.CtrSubcontractProgressSettlementItemMapper; +import org.dromara.ctr.service.ICtrSubcontractProgressSettlementItemService; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * 分包合同进度结算清单Service业务层处理 + * + * @author lilemy + * @date 2025-10-18 + */ +@RequiredArgsConstructor +@Service +public class CtrSubcontractProgressSettlementItemServiceImpl extends ServiceImpl + implements ICtrSubcontractProgressSettlementItemService { + + private final CtrSubcontractProgressSettlementItemMapper baseMapper; + + /** + * 查询分包合同进度结算清单 + * + * @param id 主键 + * @return 分包合同进度结算清单 + */ + @Override + public CtrSubcontractProgressSettlementItemVo queryById(Long id) { + return baseMapper.selectVoById(id); + } + + /** + * 分页查询分包合同进度结算清单列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 分包合同进度结算清单分页列表 + */ + @Override + public TableDataInfo queryPageList(CtrSubcontractProgressSettlementItemBo 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(CtrSubcontractProgressSettlementItemBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(CtrSubcontractProgressSettlementItemBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(CtrSubcontractProgressSettlementItem::getId); + lqw.eq(bo.getSettlementId() != null, CtrSubcontractProgressSettlementItem::getSettlementId, bo.getSettlementId()); + lqw.eq(StringUtils.isNotBlank(bo.getType()), CtrSubcontractProgressSettlementItem::getType, bo.getType()); + lqw.eq(StringUtils.isNotBlank(bo.getCode()), CtrSubcontractProgressSettlementItem::getCode, bo.getCode()); + lqw.like(StringUtils.isNotBlank(bo.getName()), CtrSubcontractProgressSettlementItem::getName, bo.getName()); + lqw.eq(StringUtils.isNotBlank(bo.getUnit()), CtrSubcontractProgressSettlementItem::getUnit, bo.getUnit()); + lqw.eq(bo.getUnitPrice() != null, CtrSubcontractProgressSettlementItem::getUnitPrice, bo.getUnitPrice()); + lqw.eq(bo.getTaxUnitPrice() != null, CtrSubcontractProgressSettlementItem::getTaxUnitPrice, bo.getTaxUnitPrice()); + lqw.eq(bo.getCurrentQty() != null, CtrSubcontractProgressSettlementItem::getCurrentQty, bo.getCurrentQty()); + lqw.eq(bo.getCurrentRate() != null, CtrSubcontractProgressSettlementItem::getCurrentRate, bo.getCurrentRate()); + lqw.eq(bo.getCurrentAmount() != null, CtrSubcontractProgressSettlementItem::getCurrentAmount, bo.getCurrentAmount()); + lqw.eq(bo.getCurrentNoAmount() != null, CtrSubcontractProgressSettlementItem::getCurrentNoAmount, bo.getCurrentNoAmount()); + lqw.eq(bo.getCurrentApprovedQty() != null, CtrSubcontractProgressSettlementItem::getCurrentApprovedQty, bo.getCurrentApprovedQty()); + lqw.eq(bo.getCurrentApprovedAmount() != null, CtrSubcontractProgressSettlementItem::getCurrentApprovedAmount, bo.getCurrentApprovedAmount()); + lqw.eq(StringUtils.isNotBlank(bo.getTaxRate()), CtrSubcontractProgressSettlementItem::getTaxRate, bo.getTaxRate()); + lqw.eq(StringUtils.isNotBlank(bo.getTax()), CtrSubcontractProgressSettlementItem::getTax, bo.getTax()); + lqw.eq(StringUtils.isNotBlank(bo.getWbs()), CtrSubcontractProgressSettlementItem::getWbs, bo.getWbs()); + lqw.eq(StringUtils.isNotBlank(bo.getCbs()), CtrSubcontractProgressSettlementItem::getCbs, bo.getCbs()); + lqw.eq(bo.getCbsBudgetTotal() != null, CtrSubcontractProgressSettlementItem::getCbsBudgetTotal, bo.getCbsBudgetTotal()); + lqw.eq(bo.getCbsBalance() != null, CtrSubcontractProgressSettlementItem::getCbsBalance, bo.getCbsBalance()); + return lqw; + } + + /** + * 新增分包合同进度结算清单 + * + * @param bo 分包合同进度结算清单 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(CtrSubcontractProgressSettlementItemBo bo) { + CtrSubcontractProgressSettlementItem add = MapstructUtils.convert(bo, CtrSubcontractProgressSettlementItem.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改分包合同进度结算清单 + * + * @param bo 分包合同进度结算清单 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(CtrSubcontractProgressSettlementItemBo bo) { + CtrSubcontractProgressSettlementItem update = MapstructUtils.convert(bo, CtrSubcontractProgressSettlementItem.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(CtrSubcontractProgressSettlementItem 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/ctr/service/impl/CtrSubcontractProgressSettlementServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/service/impl/CtrSubcontractProgressSettlementServiceImpl.java new file mode 100644 index 00000000..e3e91cc3 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/ctr/service/impl/CtrSubcontractProgressSettlementServiceImpl.java @@ -0,0 +1,262 @@ +package org.dromara.ctr.service.impl; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +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.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.ctr.domain.CtrSubcontractProgressSettlement; +import org.dromara.ctr.domain.CtrSubcontractProgressSettlementItem; +import org.dromara.ctr.domain.bo.CtrSubcontractProgressSettlementBo; +import org.dromara.ctr.domain.dto.CtrSubcontractProgressSettlementCreateReq; +import org.dromara.ctr.domain.dto.CtrSubcontractProgressSettlementItemCreateReq; +import org.dromara.ctr.domain.dto.CtrSubcontractProgressSettlementItemUpdateReq; +import org.dromara.ctr.domain.dto.CtrSubcontractProgressSettlementUpdateReq; +import org.dromara.ctr.domain.vo.CtrSubcontractProgressSettlementItemVo; +import org.dromara.ctr.domain.vo.CtrSubcontractProgressSettlementVo; +import org.dromara.ctr.mapper.CtrSubcontractProgressSettlementMapper; +import org.dromara.ctr.service.ICtrSubcontractProgressSettlementItemService; +import org.dromara.ctr.service.ICtrSubcontractProgressSettlementService; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 分包合同进度结算Service业务层处理 + * + * @author lilemy + * @date 2025-10-18 + */ +@RequiredArgsConstructor +@Service +public class CtrSubcontractProgressSettlementServiceImpl extends ServiceImpl + implements ICtrSubcontractProgressSettlementService { + + private final ICtrSubcontractProgressSettlementItemService subcontractProgressSettlementItemService; + + /** + * 查询分包合同进度结算 + * + * @param id 主键 + * @return 分包合同进度结算 + */ + @Override + public CtrSubcontractProgressSettlementVo queryById(Long id) { + CtrSubcontractProgressSettlementVo vo = baseMapper.selectVoById(id); + List list = subcontractProgressSettlementItemService.lambdaQuery() + .eq(CtrSubcontractProgressSettlementItem::getSettlementId, id) + .list(); + if (CollUtil.isNotEmpty(list)) { + List listVo = list.stream().map(item -> + MapstructUtils.convert(item, CtrSubcontractProgressSettlementItemVo.class)) + .toList(); + Map> map = listVo.stream() + .collect(Collectors.groupingBy(CtrSubcontractProgressSettlementItemVo::getType)); + vo.setInInventory(map.getOrDefault("1", new ArrayList<>())); + vo.setChangeInventory(map.getOrDefault("2", new ArrayList<>())); + vo.setOutInventory(map.getOrDefault("3", new ArrayList<>())); + } + return vo; + } + + /** + * 分页查询分包合同进度结算列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 分包合同进度结算分页列表 + */ + @Override + public TableDataInfo queryPageList(CtrSubcontractProgressSettlementBo 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(CtrSubcontractProgressSettlementBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(CtrSubcontractProgressSettlementBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(CtrSubcontractProgressSettlement::getId); + lqw.like(StringUtils.isNotBlank(bo.getDocumentCode()), CtrSubcontractProgressSettlement::getDocumentCode, bo.getDocumentCode()); + lqw.eq(StringUtils.isNotBlank(bo.getTitle()), CtrSubcontractProgressSettlement::getTitle, bo.getTitle()); + lqw.eq(bo.getDocumentDate() != null, CtrSubcontractProgressSettlement::getDocumentDate, bo.getDocumentDate()); + lqw.eq(StringUtils.isNotBlank(bo.getContractCode()), CtrSubcontractProgressSettlement::getContractCode, bo.getContractCode()); + lqw.like(StringUtils.isNotBlank(bo.getContractName()), CtrSubcontractProgressSettlement::getContractName, bo.getContractName()); + lqw.eq(StringUtils.isNotBlank(bo.getContractProgress()), CtrSubcontractProgressSettlement::getContractProgress, bo.getContractProgress()); + lqw.eq(bo.getMeasureDateBegin() != null, CtrSubcontractProgressSettlement::getMeasureDateBegin, bo.getMeasureDateBegin()); + lqw.eq(bo.getMeasureDateEnd() != null, CtrSubcontractProgressSettlement::getMeasureDateEnd, bo.getMeasureDateEnd()); + lqw.eq(bo.getProjectId() != null, CtrSubcontractProgressSettlement::getProjectId, bo.getProjectId()); + lqw.like(StringUtils.isNotBlank(bo.getProjectName()), CtrSubcontractProgressSettlement::getProjectName, bo.getProjectName()); + lqw.eq(bo.getApprovalAmount() != null, CtrSubcontractProgressSettlement::getApprovalAmount, bo.getApprovalAmount()); + lqw.eq(bo.getSettlementUnit() != null, CtrSubcontractProgressSettlement::getSettlementUnit, bo.getSettlementUnit()); + lqw.eq(bo.getContractAmount() != null, CtrSubcontractProgressSettlement::getContractAmount, bo.getContractAmount()); + lqw.eq(bo.getCurrentSettlementRate() != null, CtrSubcontractProgressSettlement::getCurrentSettlementRate, bo.getCurrentSettlementRate()); + lqw.eq(StringUtils.isNotBlank(bo.getFileId()), CtrSubcontractProgressSettlement::getFileId, bo.getFileId()); + lqw.eq(StringUtils.isNotBlank(bo.getAuditStatus()), CtrSubcontractProgressSettlement::getAuditStatus, bo.getAuditStatus()); + return lqw; + } + + /** + * 新增分包合同进度结算 + * + * @param req 分包合同进度结算 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(CtrSubcontractProgressSettlementCreateReq req) { + CtrSubcontractProgressSettlement add = MapstructUtils.convert(req, CtrSubcontractProgressSettlement.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + Long id = add.getId(); + List inInventory = req.getInInventory(); + List changeInventory = req.getChangeInventory(); + List outInventory = req.getOutInventory(); + List itemList = new ArrayList<>(); + itemList.addAll(inInventory.stream().map(r -> { + CtrSubcontractProgressSettlementItem item = new CtrSubcontractProgressSettlementItem(); + item.setSettlementId(id); + item.setType("1"); + BeanUtils.copyProperties(r, item); + return item; + }).toList()); + itemList.addAll(changeInventory.stream().map(r -> { + CtrSubcontractProgressSettlementItem item = new CtrSubcontractProgressSettlementItem(); + item.setSettlementId(id); + item.setType("2"); + BeanUtils.copyProperties(r, item); + return item; + }).toList()); + itemList.addAll(outInventory.stream().map(r -> { + CtrSubcontractProgressSettlementItem item = new CtrSubcontractProgressSettlementItem(); + item.setSettlementId(id); + item.setType("3"); + BeanUtils.copyProperties(r, item); + return item; + }).toList()); + if (CollUtil.isNotEmpty(itemList)) { + boolean saveBatch = subcontractProgressSettlementItemService.saveBatch(itemList); + if (!saveBatch) { + throw new ServiceException("保存分包合同进度结算明细失败"); + } + } + } + return flag; + } + + /** + * 修改分包合同进度结算 + * + * @param req 分包合同进度结算 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(CtrSubcontractProgressSettlementUpdateReq req) { + CtrSubcontractProgressSettlement update = MapstructUtils.convert(req, CtrSubcontractProgressSettlement.class); + validEntityBeforeSave(update); + Long id = req.getId(); + // 删除旧数据 + List oldList = subcontractProgressSettlementItemService.lambdaQuery() + .eq(CtrSubcontractProgressSettlementItem::getSettlementId, id) + .list(); + if (CollUtil.isNotEmpty(oldList)) { + boolean deleteBatch = subcontractProgressSettlementItemService.removeByIds(oldList); + if (!deleteBatch) { + throw new ServiceException("删除分包合同进度结算明细失败"); + } + } + // 新增子数据 + List inInventory = req.getInInventory(); + List changeInventory = req.getChangeInventory(); + List outInventory = req.getOutInventory(); + List itemList = new ArrayList<>(); + itemList.addAll(inInventory.stream().map(r -> { + CtrSubcontractProgressSettlementItem item = new CtrSubcontractProgressSettlementItem(); + item.setSettlementId(id); + item.setType("1"); + BeanUtils.copyProperties(r, item); + return item; + }).toList()); + itemList.addAll(changeInventory.stream().map(r -> { + CtrSubcontractProgressSettlementItem item = new CtrSubcontractProgressSettlementItem(); + item.setSettlementId(id); + item.setType("2"); + BeanUtils.copyProperties(r, item); + return item; + }).toList()); + itemList.addAll(outInventory.stream().map(r -> { + CtrSubcontractProgressSettlementItem item = new CtrSubcontractProgressSettlementItem(); + item.setSettlementId(id); + item.setType("3"); + BeanUtils.copyProperties(r, item); + return item; + }).toList()); + if (CollUtil.isNotEmpty(itemList)) { + boolean saveBatch = subcontractProgressSettlementItemService.saveBatch(itemList); + if (!saveBatch) { + throw new ServiceException("保存承包合同进度结算明细失败"); + } + } + // 保存主数据 + boolean b = baseMapper.updateById(update) > 0; + if (!b) { + throw new ServiceException("修改分包合同进度结算失败"); + } + return true; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(CtrSubcontractProgressSettlement entity) { + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除分包合同进度结算信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + //TODO 做一些业务上的校验,判断是否需要校验 + } + // 删除关联数据 + List list = subcontractProgressSettlementItemService.lambdaQuery() + .in(CtrSubcontractProgressSettlementItem::getSettlementId, ids) + .list(); + if (CollUtil.isNotEmpty(list)) { + boolean deleteBatch = subcontractProgressSettlementItemService.removeByIds(list); + if (!deleteBatch) { + throw new ServiceException("删除分包合同进度结算明细失败"); + } + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/dto/project/BusProjectUpdateReq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/dto/project/BusProjectUpdateReq.java index aaec5bc9..d191231b 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/dto/project/BusProjectUpdateReq.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/dto/project/BusProjectUpdateReq.java @@ -152,4 +152,9 @@ public class BusProjectUpdateReq implements Serializable { */ private String position; + /** + * 所属部门列表 + */ + private List deptIds; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/project/BusProjectVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/project/BusProjectVo.java index 556c29af..4e8d060e 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/project/BusProjectVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/project/BusProjectVo.java @@ -8,7 +8,6 @@ import org.dromara.common.excel.annotation.ExcelDictFormat; import org.dromara.common.excel.convert.ExcelDictConvert; import org.dromara.project.domain.BusProject; import org.dromara.project.domain.bo.Punchrange; -import org.dromara.system.domain.vo.SysDeptVo; import java.io.Serial; import java.io.Serializable; @@ -214,8 +213,8 @@ public class BusProjectVo implements Serializable { private String position; /** - * 所属部门 + * 所属部门列表 */ - private List deptList; + private List deptIds; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectServiceImpl.java index 1ef8e281..3aabda86 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectServiceImpl.java @@ -562,6 +562,43 @@ public class BusProjectServiceImpl extends ServiceImpl deptIds = req.getDeptIds(); + // 根据项目查询部门 + List oldDeptIds = projectDeptService.lambdaQuery() + .eq(BusProjectDept::getProjectId, project.getId()) + .list() + .stream().map(BusProjectDept::getDeptId) + .toList(); + if (CollUtil.isEmpty(deptIds) && CollUtil.isEmpty(oldDeptIds)) { + return true; + } else if (CollUtil.isEmpty(deptIds) && CollUtil.isNotEmpty(oldDeptIds)) { + //删除所有旧部门 + boolean remove = projectDeptService.remove(Wrappers.lambdaQuery(BusProjectDept.class) + .eq(BusProjectDept::getProjectId, project.getId())); + if (!remove) { + throw new ServiceException("删除项目部门失败", HttpStatus.ERROR); + } + } else if (CollUtil.isNotEmpty(deptIds)) { + if (CollUtil.isNotEmpty(oldDeptIds)) { + //删除所有旧部门 + boolean remove = projectDeptService.remove(Wrappers.lambdaQuery(BusProjectDept.class) + .eq(BusProjectDept::getProjectId, project.getId())); + if (!remove) { + throw new ServiceException("删除项目部门失败", HttpStatus.ERROR); + } + } + //新增部门 + List busProjectDepts = deptIds.stream().map(deptId -> { + BusProjectDept projectDept = new BusProjectDept(); + projectDept.setDeptId(deptId); + projectDept.setProjectId(project.getId()); + return projectDept; + }).toList(); + boolean save = projectDeptService.saveBatch(busProjectDepts); + if (!save) { + throw new ServiceException("部门增加失败", HttpStatus.ERROR); + } + } return true; } return false; @@ -691,6 +728,11 @@ public class BusProjectServiceImpl extends ServiceImpl deptList = projectDeptService.lambdaQuery() + .eq(BusProjectDept::getProjectId, project.getId()) + .list(); + projectVo.setDeptIds(deptList.stream().map(BusProjectDept::getDeptId).toList()); return projectVo; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/safetyinspection/HseSafetyInspectionGis.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/safetyinspection/HseSafetyInspectionGis.java index 2e3f74c2..0a52a57b 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/safetyinspection/HseSafetyInspectionGis.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/domain/vo/safetyinspection/HseSafetyInspectionGis.java @@ -1,9 +1,12 @@ package org.dromara.safety.domain.vo.safetyinspection; import lombok.Data; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; import java.io.Serial; import java.io.Serializable; +import java.util.Date; /** * @author lilemy @@ -26,9 +29,10 @@ public class HseSafetyInspectionGis implements Serializable { private String checkType; /** - * 违章类型 + * 巡检类型名称 */ - private String violationType; + @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "checkType", other = "safety_inspection_check_type") + private String inspectionTypeLabel; /** * 巡检结果 @@ -40,4 +44,9 @@ public class HseSafetyInspectionGis implements Serializable { */ private String status; + /** + * 创建时间 + */ + private Date createTime; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/impl/HseSafetyInspectionServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/impl/HseSafetyInspectionServiceImpl.java index 3b8fbe22..4ce868e2 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/impl/HseSafetyInspectionServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/safety/service/impl/HseSafetyInspectionServiceImpl.java @@ -217,50 +217,33 @@ public class HseSafetyInspectionServiceImpl extends ServiceImpl()); } + gisVo.setTeamMeetingCount((long) teamMeetings.size()); // 获取整改情况 List safetyInspectionList = this.lambdaQuery() - .select(HseSafetyInspection::getId, HseSafetyInspection::getStatus, HseSafetyInspection::getIsReply) .eq(HseSafetyInspection::getProjectId, projectId) .list(); - long passCount = 0L; - for (HseSafetyInspection safetyInspection : safetyInspectionList) { - if ("1".equals(safetyInspection.getIsReply())) { - if (!safetyInspection.getStatus().equals(HseSafetyInspectionStatusEnum.INFORM.getValue())) { - passCount++; - } - } - } List passList = safetyInspectionList.stream() .filter(q -> "1".equals(q.getIsReply())) .filter(q -> !q.getStatus().equals(HseSafetyInspectionStatusEnum.INFORM.getValue())) .toList(); List pass = passList.stream().map(p -> { HseSafetyInspectionGis gis = new HseSafetyInspectionGis(); - gis.setId(p.getId()); - gis.setCheckType(p.getCheckType()); - gis.setViolationType(p.getViolationType()); - gis.setInspectionResult(p.getInspectionResult()); - gis.setStatus(p.getStatus()); + BeanUtils.copyProperties(p, gis); return gis; }).toList(); - gisVo.setTeamMeetingCount((long) teamMeetings.size()); List inspections = safetyInspectionList.stream() .filter(q -> "2".equals(q.getIsReply())) .toList() .stream().map(p -> { HseSafetyInspectionGis gis = new HseSafetyInspectionGis(); - gis.setId(p.getId()); - gis.setCheckType(p.getCheckType()); - gis.setViolationType(p.getViolationType()); - gis.setInspectionResult(p.getInspectionResult()); - gis.setStatus(p.getStatus()); + BeanUtils.copyProperties(p, gis); return gis; }).toList(); gisVo.setSafetyInspectionCount((long) inspections.size()); gisVo.setSafetyInspectionList(inspections); - gisVo.setCorrectSituationCount(passCount); + gisVo.setCorrectSituationCount((long) pass.size()); gisVo.setCorrectSituationList(pass); - gisVo.setCorrectSituation(String.format("%.2f", passCount * 100.0 / safetyInspectionList.size())); +// gisVo.setCorrectSituation(String.format("%.2f", (long) pass.size() * 100.0 / safetyInspectionList.size())); return gisVo; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java index 7319f1c4..8be47a4f 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java @@ -148,4 +148,13 @@ public class SysDeptController extends BaseController { return R.ok(deptService.selectDeptByIds(deptIds == null ? null : List.of(deptIds))); } + /** + * 查询部门 + */ + @GetMapping("/listTopDept") + public R> list() { + List list = deptService.querListDept(); + return R.ok(list); + } + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/ctr/CtrContractProgressSettlementItemMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/ctr/CtrContractProgressSettlementItemMapper.xml new file mode 100644 index 00000000..ebead73a --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/ctr/CtrContractProgressSettlementItemMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/ctr/CtrContractProgressSettlementMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/ctr/CtrContractProgressSettlementMapper.xml new file mode 100644 index 00000000..9d0caa61 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/ctr/CtrContractProgressSettlementMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/ctr/CtrSubcontractProgressSettlementItemMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/ctr/CtrSubcontractProgressSettlementItemMapper.xml new file mode 100644 index 00000000..18543f74 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/ctr/CtrSubcontractProgressSettlementItemMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/ctr/CtrSubcontractProgressSettlementMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/ctr/CtrSubcontractProgressSettlementMapper.xml new file mode 100644 index 00000000..a10eb8fb --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/ctr/CtrSubcontractProgressSettlementMapper.xml @@ -0,0 +1,7 @@ + + + + +