From 7657697d342c1f9233da8db1ba99a639e92e422c Mon Sep 17 00:00:00 2001 From: zt Date: Sat, 2 Aug 2025 11:35:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=A7=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/common/core/utils/DateUtils.java | 5 + .../OutSettlementValueOwnerController.java | 105 +++++++++++++ ...tSettlementValueSubcontractController.java | 105 +++++++++++++ .../out/controller/OutTableController.java | 118 +++++++++++++- .../out/domain/OutSettlementValueOwner.java | 58 +++++++ .../domain/OutSettlementValueSubcontract.java | 98 ++++++++++++ .../domain/bo/OutSettlementValueOwnerBo.java | 60 +++++++ .../bo/OutSettlementValueSubcontractBo.java | 101 ++++++++++++ ...ComparisonOfCompletionAndSettlementVo.java | 46 ++++++ .../vo/OutComparisonOfOwnerAndSubVo.java | 47 ++++++ .../domain/vo/OutSettlementValueOwnerVo.java | 70 +++++++++ .../vo/OutSettlementValueSubcontractVo.java | 120 ++++++++++++++ .../mapper/OutConstructionValueMapper.java | 8 + .../out/mapper/OutMonthPlanMapper.java | 6 + .../mapper/OutSettlementValueOwnerMapper.java | 22 +++ .../OutSettlementValueSubcontractMapper.java | 22 +++ .../service/IOutConstructionValueService.java | 10 ++ .../out/service/IOutMonthPlanService.java | 8 + .../IOutSettlementValueOwnerService.java | 78 ++++++++++ ...IOutSettlementValueSubcontractService.java | 77 +++++++++ .../impl/OutConstructionValueServiceImpl.java | 5 + .../service/impl/OutMonthPlanServiceImpl.java | 6 + .../OutSettlementValueOwnerServiceImpl.java | 140 +++++++++++++++++ ...SettlementValueSubcontractServiceImpl.java | 147 ++++++++++++++++++ .../out/OutSettlementValueOwnerMapper.xml | 7 + .../OutSettlementValueSubcontractMapper.xml | 7 + 26 files changed, 1473 insertions(+), 3 deletions(-) create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/controller/OutSettlementValueOwnerController.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/controller/OutSettlementValueSubcontractController.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/OutSettlementValueOwner.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/OutSettlementValueSubcontract.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/bo/OutSettlementValueOwnerBo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/bo/OutSettlementValueSubcontractBo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutComparisonOfCompletionAndSettlementVo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutComparisonOfOwnerAndSubVo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutSettlementValueOwnerVo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutSettlementValueSubcontractVo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/mapper/OutSettlementValueOwnerMapper.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/mapper/OutSettlementValueSubcontractMapper.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/IOutSettlementValueOwnerService.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/IOutSettlementValueSubcontractService.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/impl/OutSettlementValueOwnerServiceImpl.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/impl/OutSettlementValueSubcontractServiceImpl.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/out/OutSettlementValueOwnerMapper.xml create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/out/OutSettlementValueSubcontractMapper.xml diff --git a/xinnengyuan/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/DateUtils.java b/xinnengyuan/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/DateUtils.java index 737ccd9d..7aebac66 100644 --- a/xinnengyuan/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/DateUtils.java +++ b/xinnengyuan/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/DateUtils.java @@ -159,6 +159,11 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { public static LocalDate parseLocalDateTime(final FormatsType format, final String ts) { try { DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format.getTimeFormat()); + // 如果是年月格式,则默认设置为该月第一天 + if (format.getTimeFormat().equals("yyyy-MM") || format.getTimeFormat().equals("yyyy/MM") || format.getTimeFormat().equals("yyyy.MM")) { + YearMonth yearMonth = YearMonth.parse(ts, formatter); + return yearMonth.atDay(1); + } return LocalDate.parse(ts, formatter); } catch (Exception e) { throw new RuntimeException(e); diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/controller/OutSettlementValueOwnerController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/controller/OutSettlementValueOwnerController.java new file mode 100644 index 00000000..c0f4750e --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/controller/OutSettlementValueOwnerController.java @@ -0,0 +1,105 @@ +package org.dromara.out.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.out.domain.vo.OutSettlementValueOwnerVo; +import org.dromara.out.domain.bo.OutSettlementValueOwnerBo; +import org.dromara.out.service.IOutSettlementValueOwnerService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 结算产值登记(对甲) + * + * @author Lion Li + * @date 2025-08-01 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/out/settlementValueOwner") +public class OutSettlementValueOwnerController extends BaseController { + + private final IOutSettlementValueOwnerService outSettlementValueOwnerService; + + /** + * 查询结算产值登记(对甲)列表 + */ + @SaCheckPermission("out:settlementValueOwner:list") + @GetMapping("/list") + public TableDataInfo list(OutSettlementValueOwnerBo bo, PageQuery pageQuery) { + return outSettlementValueOwnerService.queryPageList(bo, pageQuery); + } + + /** + * 导出结算产值登记(对甲)列表 + */ + @SaCheckPermission("out:settlementValueOwner:export") + @Log(title = "结算产值登记(对甲)", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(OutSettlementValueOwnerBo bo, HttpServletResponse response) { + List list = outSettlementValueOwnerService.queryList(bo); + ExcelUtil.exportExcel(list, "结算产值登记(对甲)", OutSettlementValueOwnerVo.class, response); + } + + /** + * 获取结算产值登记(对甲)详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("out:settlementValueOwner:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(outSettlementValueOwnerService.queryById(id)); + } + + /** + * 新增结算产值登记(对甲) + */ + @SaCheckPermission("out:settlementValueOwner:add") + @Log(title = "结算产值登记(对甲)", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody OutSettlementValueOwnerBo bo) { + return toAjax(outSettlementValueOwnerService.insertByBo(bo)); + } + + /** + * 修改结算产值登记(对甲) + */ + @SaCheckPermission("out:settlementValueOwner:edit") + @Log(title = "结算产值登记(对甲)", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody OutSettlementValueOwnerBo bo) { + return toAjax(outSettlementValueOwnerService.updateByBo(bo)); + } + + /** + * 删除结算产值登记(对甲) + * + * @param ids 主键串 + */ + @SaCheckPermission("out:settlementValueOwner:remove") + @Log(title = "结算产值登记(对甲)", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(outSettlementValueOwnerService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/controller/OutSettlementValueSubcontractController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/controller/OutSettlementValueSubcontractController.java new file mode 100644 index 00000000..cd2ab12a --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/controller/OutSettlementValueSubcontractController.java @@ -0,0 +1,105 @@ +package org.dromara.out.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.out.domain.vo.OutSettlementValueSubcontractVo; +import org.dromara.out.domain.bo.OutSettlementValueSubcontractBo; +import org.dromara.out.service.IOutSettlementValueSubcontractService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 结算产值登记(对乙) + * + * @author Lion Li + * @date 2025-08-01 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/out/settlementValueSubcontract") +public class OutSettlementValueSubcontractController extends BaseController { + + private final IOutSettlementValueSubcontractService outSettlementValueSubcontractService; + + /** + * 查询结算产值登记(对乙)列表 + */ + @SaCheckPermission("out:settlementValueSubcontract:list") + @GetMapping("/list") + public TableDataInfo list(OutSettlementValueSubcontractBo bo, PageQuery pageQuery) { + return outSettlementValueSubcontractService.queryPageList(bo, pageQuery); + } + + /** + * 导出结算产值登记(对乙)列表 + */ + @SaCheckPermission("out:settlementValueSubcontract:export") + @Log(title = "结算产值登记(对乙)", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(OutSettlementValueSubcontractBo bo, HttpServletResponse response) { + List list = outSettlementValueSubcontractService.queryList(bo); + ExcelUtil.exportExcel(list, "结算产值登记(对乙)", OutSettlementValueSubcontractVo.class, response); + } + + /** + * 获取结算产值登记(对乙)详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("out:settlementValueSubcontract:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(outSettlementValueSubcontractService.queryById(id)); + } + + /** + * 新增结算产值登记(对乙) + */ + @SaCheckPermission("out:settlementValueSubcontract:add") + @Log(title = "结算产值登记(对乙)", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody OutSettlementValueSubcontractBo bo) { + return toAjax(outSettlementValueSubcontractService.insertByBo(bo)); + } + + /** + * 修改结算产值登记(对乙) + */ + @SaCheckPermission("out:settlementValueSubcontract:edit") + @Log(title = "结算产值登记(对乙)", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody OutSettlementValueSubcontractBo bo) { + return toAjax(outSettlementValueSubcontractService.updateByBo(bo)); + } + + /** + * 删除结算产值登记(对乙) + * + * @param ids 主键串 + */ + @SaCheckPermission("out:settlementValueSubcontract:remove") + @Log(title = "结算产值登记(对乙)", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(outSettlementValueSubcontractService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/controller/OutTableController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/controller/OutTableController.java index b76d6ac7..49625b54 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/controller/OutTableController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/controller/OutTableController.java @@ -13,9 +13,10 @@ import org.dromara.common.web.core.BaseController; import org.dromara.out.domain.OutConstructionValue; import org.dromara.out.domain.OutMonthPlanAudit; import org.dromara.out.domain.bo.OutTableBo; +import org.dromara.out.domain.vo.OutComparisonOfCompletionAndSettlementVo; +import org.dromara.out.domain.vo.OutComparisonOfOwnerAndSubVo; import org.dromara.out.domain.vo.OutMonthlyConstructionVo; -import org.dromara.out.service.IOutConstructionValueService; -import org.dromara.out.service.IOutMonthPlanAuditService; +import org.dromara.out.service.*; import org.dromara.progress.domain.PgsProgressCategory; import org.dromara.progress.domain.PgsProgressPlanDetail; import org.dromara.progress.service.IPgsProgressCategoryService; @@ -57,9 +58,15 @@ public class OutTableController extends BaseController { private final IOutMonthPlanAuditService outMonthPlanAuditService; + private final IOutMonthPlanService monthPlanService; + + private final IOutSettlementValueSubcontractService settlementValueSubcontractService; + + private final IOutSettlementValueOwnerService settlementValueOwnerService; + /** - * 查询公司项目月度施工产值表 + * 施工产值报表(计划 VS 实际) */ @SaCheckPermission("out:table:list") @GetMapping("/monthlyConstruct") @@ -226,5 +233,110 @@ public class OutTableController extends BaseController { } + /** + * 分包完工产值与结算产值对比表 + */ + @SaCheckPermission("out:table:list") + @GetMapping("/comparisonOfCompletionAndSettlement") + public TableDataInfo comparisonOfCompletionAndSettlement(OutTableBo bo, PageQuery pageQuery) { + + //分页查询所有父项目 + BusProjectQueryReq busProjectQueryReq = new BusProjectQueryReq(); + busProjectQueryReq.setPId(0L); + TableDataInfo busProjectVoTableDataInfo = projectService.queryPageList(busProjectQueryReq, pageQuery); + List rows = busProjectVoTableDataInfo.getRows(); + + + + List outComparisonOfCompletionAndSettlementVos = new ArrayList<>(); + + for (BusProjectVo projectVo : rows) { + Long projectVoId = projectVo.getId(); + + OutComparisonOfCompletionAndSettlementVo vo = new OutComparisonOfCompletionAndSettlementVo(); + vo.setProjectName(projectVo.getProjectName()); + + vo.setProjectId(projectVoId); + + //设计完工产值 + BigDecimal designValue = monthPlanService.getDesignValueByProjectId(projectVoId); + //施工完工产值 + BigDecimal constructionValue = constructionValueService.getCompleteValue(projectVoId); + //采购完工产值 todo: 掉罗成的接口 + BigDecimal purchaseValue = BigDecimal.ZERO; + + vo.setTotalCompletionOutputValue( designValue.add(constructionValue).add(purchaseValue)); + + //结算产值 + BigDecimal settlementValue = settlementValueSubcontractService.getValueByProjectId(projectVoId); + vo.setTotalSettlementOutputValue(settlementValue); + vo.setCompletionUnsettledAmount(vo.getTotalSettlementOutputValue().subtract(vo.getTotalCompletionOutputValue())); + vo.setCompletionUnsettledRatio(BigDecimalUtil.toPercentage(vo.getCompletionUnsettledAmount(), vo.getTotalCompletionOutputValue())); + + outComparisonOfCompletionAndSettlementVos.add(vo); + } + + TableDataInfo rspData = new TableDataInfo<>(); + rspData.setCode(HttpStatus.HTTP_OK); + rspData.setMsg("查询成功"); + rspData.setRows(outComparisonOfCompletionAndSettlementVos); + rspData.setTotal(busProjectVoTableDataInfo.getTotal()); + + return rspData; + } + + /** + * 结算产值 VS 业主结算报表 + */ + @SaCheckPermission("out:table:list") + @GetMapping("/comparisonOfOwnerAndSub") + public TableDataInfo comparisonOfOwnerAndSub(OutTableBo bo, PageQuery pageQuery){ + //分页查询所有父项目 + BusProjectQueryReq busProjectQueryReq = new BusProjectQueryReq(); + busProjectQueryReq.setPId(0L); + TableDataInfo busProjectVoTableDataInfo = projectService.queryPageList(busProjectQueryReq, pageQuery); + List rows = busProjectVoTableDataInfo.getRows(); + + + List vos = new ArrayList<>(); + + for (BusProjectVo projectVo : rows) { + Long projectVoId = projectVo.getId(); + + OutComparisonOfOwnerAndSubVo vo = new OutComparisonOfOwnerAndSubVo(); + vo.setProjectName(projectVo.getProjectName()); + + vo.setProjectId(projectVoId); + + //设计完工产值 + BigDecimal designValue = monthPlanService.getDesignValueByProjectId(projectVoId); + //施工完工产值 + BigDecimal constructionValue = constructionValueService.getCompleteValue(projectVoId); + //采购完工产值 todo: 掉罗成的接口 + BigDecimal purchaseValue = BigDecimal.ZERO; + + vo.setTotalCompletionOutputValue( designValue.add(constructionValue).add(purchaseValue)); + + //分包结算产值 + BigDecimal settlementValue = settlementValueSubcontractService.getValueByProjectId(projectVoId); + vo.setSubTotalSettlementOutputValue(settlementValue); + + //业主结算产值 + BigDecimal ownerSettlementValue = settlementValueOwnerService.getValueByProjectId(projectVoId); + vo.setOwnerTotalSettlementOutputValue(ownerSettlementValue); + + vos.add(vo); + } + + TableDataInfo rspData = new TableDataInfo<>(); + rspData.setCode(HttpStatus.HTTP_OK); + rspData.setMsg("查询成功"); + rspData.setRows(vos); + rspData.setTotal(busProjectVoTableDataInfo.getTotal()); + + return rspData; + } + + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/OutSettlementValueOwner.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/OutSettlementValueOwner.java new file mode 100644 index 00000000..37e77f05 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/OutSettlementValueOwner.java @@ -0,0 +1,58 @@ +package org.dromara.out.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; + +/** + * 结算产值登记(对甲)对象 out_settlement_value_owner + * + * @author Lion Li + * @date 2025-08-01 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("out_settlement_value_owner") +public class OutSettlementValueOwner extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 结算产值 + */ + private BigDecimal settlementValue; + + /** + * 1-设计 2-采购 3-施工 + */ + private String valueType; + + /** + * 说明 + */ + private String remark; + + /** + * 结算日期 + */ + private LocalDate settlementDate; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/OutSettlementValueSubcontract.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/OutSettlementValueSubcontract.java new file mode 100644 index 00000000..d911669c --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/OutSettlementValueSubcontract.java @@ -0,0 +1,98 @@ +package org.dromara.out.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; + +/** + * 结算产值登记(对乙)对象 out_settlement_value_subcontract + * + * @author Lion Li + * @date 2025-08-01 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("out_settlement_value_subcontract") +public class OutSettlementValueSubcontract extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 单据编码 + */ + private String documentCode; + + /** + * 结算说明 + */ + private String settlementDescribe; + + /** + * 结算周期(YYYY-MM) + */ + private String settlementMonth; + + /** + * 结算日期 + */ + private LocalDate settlementDate; + + /** + * 分包单位ID + */ + private Long contractorId; + + /** + * 分包单位名 + */ + private String contractorName; + + /** + * 结算产值 + */ + private BigDecimal settlementValue; + + /** + * 1-设计 2-采购 3-施工 + */ + private String valueType; + + /** + * 说明 + */ + private String remark; + + /** + * 合同编码 + */ + private String contractCode; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 合同地址 + */ + private String contractUrl; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/bo/OutSettlementValueOwnerBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/bo/OutSettlementValueOwnerBo.java new file mode 100644 index 00000000..37b100d3 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/bo/OutSettlementValueOwnerBo.java @@ -0,0 +1,60 @@ +package org.dromara.out.domain.bo; + +import org.dromara.out.domain.OutSettlementValueOwner; +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; + +/** + * 结算产值登记(对甲)业务对象 out_settlement_value_owner + * + * @author Lion Li + * @date 2025-08-01 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = OutSettlementValueOwner.class, reverseConvertGenerate = false) +public class OutSettlementValueOwnerBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 项目ID + */ + @NotNull(message = "项目ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long projectId; + + /** + * 结算产值 + */ + @NotNull(message = "结算产值不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal settlementValue; + + /** + * 1-设计 2-采购 3-施工 + */ + @NotBlank(message = "1-设计 2-采购 3-施工不能为空", groups = { AddGroup.class, EditGroup.class }) + private String valueType; + + /** + * 说明 + */ + private String remark; + + /** + * 结算日期 + */ + private LocalDate settlementDate; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/bo/OutSettlementValueSubcontractBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/bo/OutSettlementValueSubcontractBo.java new file mode 100644 index 00000000..b4dea36a --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/bo/OutSettlementValueSubcontractBo.java @@ -0,0 +1,101 @@ +package org.dromara.out.domain.bo; + +import org.dromara.out.domain.OutSettlementValueSubcontract; +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; + +/** + * 结算产值登记(对乙)业务对象 out_settlement_value_subcontract + * + * @author Lion Li + * @date 2025-08-01 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = OutSettlementValueSubcontract.class, reverseConvertGenerate = false) +public class OutSettlementValueSubcontractBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 项目ID + */ + @NotNull(message = "项目ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long projectId; + + /** + * 单据编码 + */ + private String documentCode; + + /** + * 结算说明 + */ + private String settlementDescribe; + + /** + * 结算周期(YYYY-MM) + */ + @NotBlank(message = "结算周期(YYYY-MM)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String settlementMonth; + + /** + * 结算日期 + */ + @NotNull(message = "结算日期不能为空", groups = { AddGroup.class, EditGroup.class }) + private LocalDate settlementDate; + + /** + * 分包单位ID + */ + private Long contractorId; + + /** + * 分包单位名 + */ + private String contractorName; + + /** + * 结算产值 + */ + @NotNull(message = "结算产值不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal settlementValue; + + /** + * 1-设计 2-采购 3-施工 + */ + @NotBlank(message = "1-设计 2-采购 3-施工不能为空", groups = { AddGroup.class, EditGroup.class }) + private String valueType; + /** + * 说明 + */ + private String remark; + + /** + * 合同编码 + */ + private String contractCode; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 合同地址 + */ + private String contractUrl; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutComparisonOfCompletionAndSettlementVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutComparisonOfCompletionAndSettlementVo.java new file mode 100644 index 00000000..790caaf0 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutComparisonOfCompletionAndSettlementVo.java @@ -0,0 +1,46 @@ +package org.dromara.out.domain.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class OutComparisonOfCompletionAndSettlementVo { + + + /** + * 项目id + */ + private Long projectId; + + /** + * 项目名称 + */ + @ExcelProperty(value = "项目名称") + private String projectName; + + /** + * 累计完工产值 + */ + @ExcelProperty(value = "累计完工产值") + private BigDecimal totalCompletionOutputValue; + + /** + * 累计结算产值 + */ + @ExcelProperty(value = "累计结算产值") + private BigDecimal totalSettlementOutputValue; + + /** + * 完工未结算额 + */ + @ExcelProperty(value = "完工未结算额") + private BigDecimal completionUnsettledAmount; + + /** + * 完工未结算比例 + */ + @ExcelProperty(value = "完工未结算比例") + private BigDecimal completionUnsettledRatio; +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutComparisonOfOwnerAndSubVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutComparisonOfOwnerAndSubVo.java new file mode 100644 index 00000000..cc23fba3 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutComparisonOfOwnerAndSubVo.java @@ -0,0 +1,47 @@ +package org.dromara.out.domain.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.math.BigDecimal; + + +@Data +public class OutComparisonOfOwnerAndSubVo { + + /** + * 项目id + */ + private Long projectId; + + /** + * 项目名称 + */ + @ExcelProperty(value = "项目名称") + private String projectName; + + /** + * 累计完工产值 + */ + @ExcelProperty(value = "累计完工产值") + private BigDecimal totalCompletionOutputValue; + + /** + * 分包累计结算产值 + */ + @ExcelProperty(value = "分包累计结算产值") + private BigDecimal subTotalSettlementOutputValue; + + /** + * 业主累计结算产值 + */ + @ExcelProperty(value = "业主累计结算产值") + private BigDecimal ownerTotalSettlementOutputValue; + + /** + * 差额 + */ + @ExcelProperty(value = "差额") + private BigDecimal differenceValue; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutSettlementValueOwnerVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutSettlementValueOwnerVo.java new file mode 100644 index 00000000..092df177 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutSettlementValueOwnerVo.java @@ -0,0 +1,70 @@ +package org.dromara.out.domain.vo; + +import java.math.BigDecimal; +import org.dromara.out.domain.OutSettlementValueOwner; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.time.LocalDate; +import java.util.Date; + + + +/** + * 结算产值登记(对甲)视图对象 out_settlement_value_owner + * + * @author Lion Li + * @date 2025-08-01 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = OutSettlementValueOwner.class) +public class OutSettlementValueOwnerVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 结算产值 + */ + @ExcelProperty(value = "结算产值") + private BigDecimal settlementValue; + + /** + * 1-设计 2-采购 3-施工 + */ + @ExcelProperty(value = "1-设计 2-采购 3-施工") + private String valueType; + + /** + * 说明 + */ + @ExcelProperty(value = "说明") + private String remark; + + /** + * 结算日期 + */ + @ExcelProperty(value = "结算日期") + private LocalDate settlementDate; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutSettlementValueSubcontractVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutSettlementValueSubcontractVo.java new file mode 100644 index 00000000..7d0a9c41 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutSettlementValueSubcontractVo.java @@ -0,0 +1,120 @@ +package org.dromara.out.domain.vo; + +import java.math.BigDecimal; +import org.dromara.out.domain.OutSettlementValueSubcontract; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.time.LocalDate; +import java.util.Date; + + + +/** + * 结算产值登记(对乙)视图对象 out_settlement_value_subcontract + * + * @author Lion Li + * @date 2025-08-01 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = OutSettlementValueSubcontract.class) +public class OutSettlementValueSubcontractVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 项目ID + */ + @ExcelProperty(value = "项目ID") + private Long projectId; + + /** + * 单据编码 + */ + @ExcelProperty(value = "单据编码") + private String documentCode; + + /** + * 结算说明 + */ + @ExcelProperty(value = "结算说明") + private String settlementDescribe; + + /** + * 结算周期(YYYY-MM) + */ + @ExcelProperty(value = "结算周期", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "Y=YYY-MM") + private String settlementMonth; + + /** + * 结算日期 + */ + @ExcelProperty(value = "结算日期") + private LocalDate settlementDate; + + /** + * 分包单位ID + */ + @ExcelProperty(value = "分包单位ID") + private Long contractorId; + + /** + * 分包单位名 + */ + @ExcelProperty(value = "分包单位名") + private String contractorName; + + /** + * 结算产值 + */ + @ExcelProperty(value = "结算产值") + private BigDecimal settlementValue; + + /** + * 1-设计 2-采购 3-施工 + */ + @ExcelProperty(value = "1-设计 2-采购 3-施工") + private String valueType; + + + /** + * 说明 + */ + @ExcelProperty(value = "说明") + private String remark; + + /** + * 合同编码 + */ + @ExcelProperty(value = "合同编码") + private String contractCode; + + /** + * 合同名称 + */ + @ExcelProperty(value = "合同名称") + private String contractName; + + /** + * 合同地址 + */ + @ExcelProperty(value = "合同地址") + private String contractUrl; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/mapper/OutConstructionValueMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/mapper/OutConstructionValueMapper.java index abb23097..7b8acdea 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/mapper/OutConstructionValueMapper.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/mapper/OutConstructionValueMapper.java @@ -1,9 +1,13 @@ package org.dromara.out.mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import org.dromara.out.domain.OutConstructionValue; import org.dromara.out.domain.vo.OutConstructionValueVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import java.math.BigDecimal; + /** * 施工产值Mapper接口 * @@ -12,4 +16,8 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; */ public interface OutConstructionValueMapper extends BaseMapperPlus { + + @Select("select sum(out_value) from out_construction_value where project_id = #{projectId} and audit_status = 'finish' ") + BigDecimal getCompleteValue( @Param("projectId") Long projectId); + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/mapper/OutMonthPlanMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/mapper/OutMonthPlanMapper.java index 92511828..236d9dcb 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/mapper/OutMonthPlanMapper.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/mapper/OutMonthPlanMapper.java @@ -1,9 +1,13 @@ package org.dromara.out.mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import org.dromara.out.domain.OutMonthPlan; import org.dromara.out.domain.vo.OutMonthPlanVo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import java.math.BigDecimal; + /** * 月度产值计划Mapper接口 * @@ -12,4 +16,6 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; */ public interface OutMonthPlanMapper extends BaseMapperPlus { + @Select("select sum(complete_value) from out_month_plan where value_type = 1 and complete_audit_status = 'finish' and project_id = #{projectId}") + BigDecimal getDesignValueByProjectId(@Param("projectId") Long projectId); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/mapper/OutSettlementValueOwnerMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/mapper/OutSettlementValueOwnerMapper.java new file mode 100644 index 00000000..7bfab6d3 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/mapper/OutSettlementValueOwnerMapper.java @@ -0,0 +1,22 @@ +package org.dromara.out.mapper; + +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.dromara.out.domain.OutSettlementValueOwner; +import org.dromara.out.domain.vo.OutSettlementValueOwnerVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +import java.math.BigDecimal; + +/** + * 结算产值登记(对甲)Mapper接口 + * + * @author Lion Li + * @date 2025-08-01 + */ +public interface OutSettlementValueOwnerMapper extends BaseMapperPlus { + + + @Select("select sum(settlement_value) from out_settlement_value_owner where project_id = #{projectId}") + BigDecimal getValueByProjectId(@Param("projectId") Long projectId); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/mapper/OutSettlementValueSubcontractMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/mapper/OutSettlementValueSubcontractMapper.java new file mode 100644 index 00000000..19a15d0c --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/mapper/OutSettlementValueSubcontractMapper.java @@ -0,0 +1,22 @@ +package org.dromara.out.mapper; + +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.dromara.out.domain.OutSettlementValueSubcontract; +import org.dromara.out.domain.vo.OutSettlementValueSubcontractVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +import java.math.BigDecimal; + +/** + * 结算产值登记(对乙)Mapper接口 + * + * @author Lion Li + * @date 2025-08-01 + */ +public interface OutSettlementValueSubcontractMapper extends BaseMapperPlus { + + + @Select("select sum(settlement_value) from out_settlement_value_subcontract where project_id = #{projectId} ") + BigDecimal getValueByProjectId(@Param("projectId") Long projectId); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/IOutConstructionValueService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/IOutConstructionValueService.java index 46d930bf..bbee6def 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/IOutConstructionValueService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/IOutConstructionValueService.java @@ -7,6 +7,8 @@ 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.math.BigDecimal; import java.util.Collection; import java.util.List; @@ -68,4 +70,12 @@ public interface IOutConstructionValueService extends IService ids, Boolean isValid); + + /** + * 获取项目施工完成值 + * + * @param projectId 项目id + * @return 项目施工完成值 + */ + BigDecimal getCompleteValue(Long projectId); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/IOutMonthPlanService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/IOutMonthPlanService.java index 4fdc9c34..06b4bde6 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/IOutMonthPlanService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/IOutMonthPlanService.java @@ -7,6 +7,8 @@ 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.math.BigDecimal; import java.util.Collection; import java.util.List; @@ -81,4 +83,10 @@ public interface IOutMonthPlanService extends IService{ */ OutMonthPlanVo getInfoByBo(OutMonthPlanBo bo); + + /** + * 根据项目id查询项目已完工的设计产值 + */ + BigDecimal getDesignValueByProjectId(Long projectId); + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/IOutSettlementValueOwnerService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/IOutSettlementValueOwnerService.java new file mode 100644 index 00000000..afda633e --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/IOutSettlementValueOwnerService.java @@ -0,0 +1,78 @@ +package org.dromara.out.service; + +import org.dromara.out.domain.vo.OutSettlementValueOwnerVo; +import org.dromara.out.domain.bo.OutSettlementValueOwnerBo; +import org.dromara.out.domain.OutSettlementValueOwner; +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.math.BigDecimal; +import java.util.Collection; +import java.util.List; + +/** + * 结算产值登记(对甲)Service接口 + * + * @author Lion Li + * @date 2025-08-01 + */ +public interface IOutSettlementValueOwnerService extends IService{ + + /** + * 查询结算产值登记(对甲) + * + * @param id 主键 + * @return 结算产值登记(对甲) + */ + OutSettlementValueOwnerVo queryById(Long id); + + /** + * 分页查询结算产值登记(对甲)列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 结算产值登记(对甲)分页列表 + */ + TableDataInfo queryPageList(OutSettlementValueOwnerBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的结算产值登记(对甲)列表 + * + * @param bo 查询条件 + * @return 结算产值登记(对甲)列表 + */ + List queryList(OutSettlementValueOwnerBo bo); + + /** + * 新增结算产值登记(对甲) + * + * @param bo 结算产值登记(对甲) + * @return 是否新增成功 + */ + Boolean insertByBo(OutSettlementValueOwnerBo bo); + + /** + * 修改结算产值登记(对甲) + * + * @param bo 结算产值登记(对甲) + * @return 是否修改成功 + */ + Boolean updateByBo(OutSettlementValueOwnerBo bo); + + /** + * 校验并批量删除结算产值登记(对甲)信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + + /** + * 根据项目id获取项目结算产值 + */ + BigDecimal getValueByProjectId(Long projectId); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/IOutSettlementValueSubcontractService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/IOutSettlementValueSubcontractService.java new file mode 100644 index 00000000..367e62e7 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/IOutSettlementValueSubcontractService.java @@ -0,0 +1,77 @@ +package org.dromara.out.service; + +import org.dromara.out.domain.vo.OutSettlementValueSubcontractVo; +import org.dromara.out.domain.bo.OutSettlementValueSubcontractBo; +import org.dromara.out.domain.OutSettlementValueSubcontract; +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.math.BigDecimal; +import java.util.Collection; +import java.util.List; + +/** + * 结算产值登记(对乙)Service接口 + * + * @author Lion Li + * @date 2025-08-01 + */ +public interface IOutSettlementValueSubcontractService extends IService{ + + /** + * 查询结算产值登记(对乙) + * + * @param id 主键 + * @return 结算产值登记(对乙) + */ + OutSettlementValueSubcontractVo queryById(Long id); + + /** + * 分页查询结算产值登记(对乙)列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 结算产值登记(对乙)分页列表 + */ + TableDataInfo queryPageList(OutSettlementValueSubcontractBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的结算产值登记(对乙)列表 + * + * @param bo 查询条件 + * @return 结算产值登记(对乙)列表 + */ + List queryList(OutSettlementValueSubcontractBo bo); + + /** + * 新增结算产值登记(对乙) + * + * @param bo 结算产值登记(对乙) + * @return 是否新增成功 + */ + Boolean insertByBo(OutSettlementValueSubcontractBo bo); + + /** + * 修改结算产值登记(对乙) + * + * @param bo 结算产值登记(对乙) + * @return 是否修改成功 + */ + Boolean updateByBo(OutSettlementValueSubcontractBo bo); + + /** + * 校验并批量删除结算产值登记(对乙)信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 根据项目id获取项目结算产值 + */ + BigDecimal getValueByProjectId(Long projectId); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/impl/OutConstructionValueServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/impl/OutConstructionValueServiceImpl.java index 9777b75a..aadaf8d5 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/impl/OutConstructionValueServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/impl/OutConstructionValueServiceImpl.java @@ -173,6 +173,11 @@ public class OutConstructionValueServiceImpl extends ServiceImpl 0; } + @Override + public BigDecimal getCompleteValue(Long projectId) { + return baseMapper.getCompleteValue(projectId); + } + /** * 补充数据 */ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/impl/OutMonthPlanServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/impl/OutMonthPlanServiceImpl.java index 032e558e..eb7d00f4 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/impl/OutMonthPlanServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/impl/OutMonthPlanServiceImpl.java @@ -190,6 +190,12 @@ public class OutMonthPlanServiceImpl extends ServiceImpl implements IOutSettlementValueOwnerService { + + private final OutSettlementValueOwnerMapper baseMapper; + + /** + * 查询结算产值登记(对甲) + * + * @param id 主键 + * @return 结算产值登记(对甲) + */ + @Override + public OutSettlementValueOwnerVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询结算产值登记(对甲)列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 结算产值登记(对甲)分页列表 + */ + @Override + public TableDataInfo queryPageList(OutSettlementValueOwnerBo 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(OutSettlementValueOwnerBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(OutSettlementValueOwnerBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(OutSettlementValueOwner::getId); + lqw.eq(bo.getProjectId() != null, OutSettlementValueOwner::getProjectId, bo.getProjectId()); + lqw.eq(bo.getSettlementValue() != null, OutSettlementValueOwner::getSettlementValue, bo.getSettlementValue()); + lqw.eq(StringUtils.isNotBlank(bo.getValueType()), OutSettlementValueOwner::getValueType, bo.getValueType()); + lqw.eq(bo.getSettlementDate() != null, OutSettlementValueOwner::getSettlementDate, bo.getSettlementDate()); + return lqw; + } + + /** + * 新增结算产值登记(对甲) + * + * @param bo 结算产值登记(对甲) + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(OutSettlementValueOwnerBo bo) { + OutSettlementValueOwner add = MapstructUtils.convert(bo, OutSettlementValueOwner.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改结算产值登记(对甲) + * + * @param bo 结算产值登记(对甲) + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(OutSettlementValueOwnerBo bo) { + OutSettlementValueOwner update = MapstructUtils.convert(bo, OutSettlementValueOwner.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(OutSettlementValueOwner entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除结算产值登记(对甲)信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } + + @Override + public BigDecimal getValueByProjectId(Long projectId) { + return baseMapper.getValueByProjectId(projectId); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/impl/OutSettlementValueSubcontractServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/impl/OutSettlementValueSubcontractServiceImpl.java new file mode 100644 index 00000000..e15b3547 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/impl/OutSettlementValueSubcontractServiceImpl.java @@ -0,0 +1,147 @@ +package org.dromara.out.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.out.domain.bo.OutSettlementValueSubcontractBo; +import org.dromara.out.domain.vo.OutSettlementValueSubcontractVo; +import org.dromara.out.domain.OutSettlementValueSubcontract; +import org.dromara.out.mapper.OutSettlementValueSubcontractMapper; +import org.dromara.out.service.IOutSettlementValueSubcontractService; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 结算产值登记(对乙)Service业务层处理 + * + * @author Lion Li + * @date 2025-08-01 + */ +@RequiredArgsConstructor +@Service +public class OutSettlementValueSubcontractServiceImpl extends ServiceImpl implements IOutSettlementValueSubcontractService { + + private final OutSettlementValueSubcontractMapper baseMapper; + + /** + * 查询结算产值登记(对乙) + * + * @param id 主键 + * @return 结算产值登记(对乙) + */ + @Override + public OutSettlementValueSubcontractVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询结算产值登记(对乙)列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 结算产值登记(对乙)分页列表 + */ + @Override + public TableDataInfo queryPageList(OutSettlementValueSubcontractBo 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(OutSettlementValueSubcontractBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(OutSettlementValueSubcontractBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(OutSettlementValueSubcontract::getId); + lqw.eq(bo.getProjectId() != null, OutSettlementValueSubcontract::getProjectId, bo.getProjectId()); + lqw.eq(StringUtils.isNotBlank(bo.getDocumentCode()), OutSettlementValueSubcontract::getDocumentCode, bo.getDocumentCode()); + lqw.eq(StringUtils.isNotBlank(bo.getSettlementDescribe()), OutSettlementValueSubcontract::getSettlementDescribe, bo.getSettlementDescribe()); + lqw.eq(StringUtils.isNotBlank(bo.getSettlementMonth()), OutSettlementValueSubcontract::getSettlementMonth, bo.getSettlementMonth()); + lqw.eq(bo.getSettlementDate() != null, OutSettlementValueSubcontract::getSettlementDate, bo.getSettlementDate()); + lqw.eq(bo.getContractorId() != null, OutSettlementValueSubcontract::getContractorId, bo.getContractorId()); + lqw.like(StringUtils.isNotBlank(bo.getContractorName()), OutSettlementValueSubcontract::getContractorName, bo.getContractorName()); + lqw.eq(bo.getSettlementValue() != null, OutSettlementValueSubcontract::getSettlementValue, bo.getSettlementValue()); + lqw.eq(StringUtils.isNotBlank(bo.getContractCode()), OutSettlementValueSubcontract::getContractCode, bo.getContractCode()); + lqw.like(StringUtils.isNotBlank(bo.getContractName()), OutSettlementValueSubcontract::getContractName, bo.getContractName()); + lqw.eq(StringUtils.isNotBlank(bo.getContractUrl()), OutSettlementValueSubcontract::getContractUrl, bo.getContractUrl()); + return lqw; + } + + /** + * 新增结算产值登记(对乙) + * + * @param bo 结算产值登记(对乙) + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(OutSettlementValueSubcontractBo bo) { + OutSettlementValueSubcontract add = MapstructUtils.convert(bo, OutSettlementValueSubcontract.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改结算产值登记(对乙) + * + * @param bo 结算产值登记(对乙) + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(OutSettlementValueSubcontractBo bo) { + OutSettlementValueSubcontract update = MapstructUtils.convert(bo, OutSettlementValueSubcontract.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(OutSettlementValueSubcontract entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除结算产值登记(对乙)信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } + + @Override + public BigDecimal getValueByProjectId(Long projectId) { + return baseMapper.getValueByProjectId(projectId); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/out/OutSettlementValueOwnerMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/out/OutSettlementValueOwnerMapper.xml new file mode 100644 index 00000000..cbb98f49 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/out/OutSettlementValueOwnerMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/out/OutSettlementValueSubcontractMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/out/OutSettlementValueSubcontractMapper.xml new file mode 100644 index 00000000..565a5e2b --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/out/OutSettlementValueSubcontractMapper.xml @@ -0,0 +1,7 @@ + + + + +