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 49625b54..a5abca13 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 @@ -2,6 +2,7 @@ package org.dromara.out.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.http.HttpStatus; +import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.core.enums.FormatsType; @@ -11,11 +12,11 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.utils.BigDecimalUtil; import org.dromara.common.web.core.BaseController; import org.dromara.out.domain.OutConstructionValue; +import org.dromara.out.domain.OutMonthPlan; import org.dromara.out.domain.OutMonthPlanAudit; +import org.dromara.out.domain.bo.OutMonthPlanBo; 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.domain.vo.*; import org.dromara.out.service.*; import org.dromara.progress.domain.PgsProgressCategory; import org.dromara.progress.domain.PgsProgressPlanDetail; @@ -29,15 +30,18 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.LocalDate; import java.time.YearMonth; import java.time.format.DateTimeFormatter; import java.time.temporal.TemporalAdjusters; import java.util.ArrayList; import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; /** - * 月度产值计划 + * 报表 * * @author Lion Li * @date 2025-07-30 @@ -68,9 +72,9 @@ public class OutTableController extends BaseController { /** * 施工产值报表(计划 VS 实际) */ - @SaCheckPermission("out:table:list") +// @SaCheckPermission("out:table:list") @GetMapping("/monthlyConstruct") - public TableDataInfo list(OutTableBo bo, PageQuery pageQuery) { + public TableDataInfo list(@NotNull String month, PageQuery pageQuery) { //分页查询所有父项目 BusProjectQueryReq busProjectQueryReq = new BusProjectQueryReq(); @@ -90,7 +94,7 @@ public class OutTableController extends BaseController { //计算日期 - LocalDate parsedDate = DateUtils.parseLocalDateTime(FormatsType.YYYY_MM, bo.getMonth()); + LocalDate parsedDate = DateUtils.parseLocalDateTime(FormatsType.YYYY_MM, month); // 当前月的第一天 LocalDate firstDay = parsedDate.with(TemporalAdjusters.firstDayOfMonth()); // 当前月的最后一天 @@ -98,7 +102,7 @@ public class OutTableController extends BaseController { // 方法1: 使用 YearMonth 进行比较(推荐) DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); - YearMonth month = YearMonth.parse(bo.getMonth(), formatter); + YearMonth yearMonth = YearMonth.parse(month, formatter); //构建返回数据 List outMonthlyConstructionVos = new ArrayList<>(); @@ -126,9 +130,9 @@ public class OutTableController extends BaseController { for (OutMonthPlanAudit planAudit : planAudits) { YearMonth planMonth = YearMonth.parse(planAudit.getPlanMonth(), formatter); // 比较大小 - if (planMonth.isBefore(month)) { + if (planMonth.isBefore(yearMonth)) { estimatedTotalValue=estimatedTotalValue.add(planAudit.getConstructionValue()); - } else if (month.isAfter(planMonth)) { + } else if (yearMonth.isAfter(planMonth)) { } else { estimatedTotalValue = estimatedTotalValue.add(planAudit.getConstructionValue()); @@ -219,8 +223,8 @@ public class OutTableController extends BaseController { vo.setTotalCompletionProgress(BigDecimalUtil.toPercentage(accumulatedCompletionValue, totalValue)); - outMonthlyConstructionVos.add(vo); } + outMonthlyConstructionVos.add(vo); } TableDataInfo rspData = new TableDataInfo<>(); @@ -236,7 +240,7 @@ public class OutTableController extends BaseController { /** * 分包完工产值与结算产值对比表 */ - @SaCheckPermission("out:table:list") +// @SaCheckPermission("out:table:list") @GetMapping("/comparisonOfCompletionAndSettlement") public TableDataInfo comparisonOfCompletionAndSettlement(OutTableBo bo, PageQuery pageQuery) { @@ -258,17 +262,32 @@ public class OutTableController extends BaseController { vo.setProjectId(projectVoId); - //设计完工产值 - BigDecimal designValue = monthPlanService.getDesignValueByProjectId(projectVoId); - //施工完工产值 - BigDecimal constructionValue = constructionValueService.getCompleteValue(projectVoId); - //采购完工产值 todo: 掉罗成的接口 - BigDecimal purchaseValue = BigDecimal.ZERO; + if("1".equals(bo.getValueType())){ + //设计完工产值 + BigDecimal designValue = monthPlanService.getDesignValueByProjectId(projectVoId,null); + vo.setTotalCompletionOutputValue( designValue); + } else if ("2".equals(bo.getValueType())) { + //施工完工产值 + BigDecimal constructionValue = constructionValueService.getCompleteValue(projectVoId,null); + vo.setTotalCompletionOutputValue(constructionValue); + }else if ("3".equals(bo.getValueType())) { + //采购完工产值 todo: 掉罗成的接口 + BigDecimal purchaseValue = BigDecimal.ZERO; + vo.setTotalCompletionOutputValue(purchaseValue); + }else{ + //设计完工产值 + BigDecimal designValue = monthPlanService.getDesignValueByProjectId(projectVoId,null); + //施工完工产值 + BigDecimal constructionValue = constructionValueService.getCompleteValue(projectVoId,null); + //采购完工产值 todo: 掉罗成的接口 + BigDecimal purchaseValue = BigDecimal.ZERO; + + vo.setTotalCompletionOutputValue( designValue.add(constructionValue).add(purchaseValue)); + } - vo.setTotalCompletionOutputValue( designValue.add(constructionValue).add(purchaseValue)); //结算产值 - BigDecimal settlementValue = settlementValueSubcontractService.getValueByProjectId(projectVoId); + BigDecimal settlementValue = settlementValueSubcontractService.getValueByProjectId(projectVoId,bo.getValueType(),null); vo.setTotalSettlementOutputValue(settlementValue); vo.setCompletionUnsettledAmount(vo.getTotalSettlementOutputValue().subtract(vo.getTotalCompletionOutputValue())); vo.setCompletionUnsettledRatio(BigDecimalUtil.toPercentage(vo.getCompletionUnsettledAmount(), vo.getTotalCompletionOutputValue())); @@ -288,7 +307,7 @@ public class OutTableController extends BaseController { /** * 结算产值 VS 业主结算报表 */ - @SaCheckPermission("out:table:list") +// @SaCheckPermission("out:table:list") @GetMapping("/comparisonOfOwnerAndSub") public TableDataInfo comparisonOfOwnerAndSub(OutTableBo bo, PageQuery pageQuery){ //分页查询所有父项目 @@ -305,24 +324,23 @@ public class OutTableController extends BaseController { OutComparisonOfOwnerAndSubVo vo = new OutComparisonOfOwnerAndSubVo(); vo.setProjectName(projectVo.getProjectName()); - vo.setProjectId(projectVoId); //设计完工产值 - BigDecimal designValue = monthPlanService.getDesignValueByProjectId(projectVoId); + BigDecimal designValue = monthPlanService.getDesignValueByProjectId(projectVoId,bo.getMonth()); //施工完工产值 - BigDecimal constructionValue = constructionValueService.getCompleteValue(projectVoId); + BigDecimal constructionValue = constructionValueService.getCompleteValue(projectVoId,bo.getMonth()); //采购完工产值 todo: 掉罗成的接口 BigDecimal purchaseValue = BigDecimal.ZERO; vo.setTotalCompletionOutputValue( designValue.add(constructionValue).add(purchaseValue)); //分包结算产值 - BigDecimal settlementValue = settlementValueSubcontractService.getValueByProjectId(projectVoId); + BigDecimal settlementValue = settlementValueSubcontractService.getValueByProjectId(projectVoId,null,bo.getMonth()); vo.setSubTotalSettlementOutputValue(settlementValue); //业主结算产值 - BigDecimal ownerSettlementValue = settlementValueOwnerService.getValueByProjectId(projectVoId); + BigDecimal ownerSettlementValue = settlementValueOwnerService.getValueByProjectId(projectVoId,bo.getMonth()); vo.setOwnerTotalSettlementOutputValue(ownerSettlementValue); vos.add(vo); @@ -338,5 +356,81 @@ public class OutTableController extends BaseController { } + /** + * 采购设计产值报表(计划 VS 实际) + */ +// @SaCheckPermission("out:table:list") + @GetMapping("/monthlyPurchase") + public TableDataInfo monthlyPurchase(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) { + OutDesignAndPurchaseValueVo vo = new OutDesignAndPurchaseValueVo(); + vo.setProjectName(projectVo.getProjectName()); + vo.setProjectId(projectVo.getId()); + + + List list = monthPlanService.lambdaQuery().eq(OutMonthPlan::getProjectId, projectVo.getId()) + .list(); + + // 计算累计完成值 + BigDecimal totalValue = list.stream() + .map(OutMonthPlan::getCompleteValue) + .filter(Objects::nonNull) + .reduce(BigDecimal.ZERO, BigDecimal::add); + vo.setTotalValue(totalValue); + + OutMonthPlan matchedPlan = list.stream() + .filter(plan -> Objects.equals(plan.getValueType(), bo.getValueType()) + && Objects.equals(plan.getPlanMonth(), bo.getMonth())) + .findFirst() + .orElse(null); + + List matchedPlans = list.stream() + .filter(plan -> Objects.equals(plan.getValueType(), bo.getValueType()) + && plan.getPlanMonth() != null + && bo.getMonth() != null + && plan.getPlanMonth().compareTo(bo.getMonth()) <= 0) + .toList(); + + vo.setMonthEstimatedValue(matchedPlan == null? BigDecimal.ZERO :matchedPlan.getPlanValue()); + + if("1".equals(bo.getValueType())){ + vo.setMonthCompletionValue(matchedPlan == null? BigDecimal.ZERO :matchedPlan.getCompleteValue()); + + // 计算累计完成值 + BigDecimal accumulatedCompleteValue = matchedPlans.stream() + .map(OutMonthPlan::getCompleteValue) + .filter(Objects::nonNull) + .reduce(BigDecimal.ZERO, BigDecimal::add); + vo.setAccumulatedCompletionValue(accumulatedCompleteValue); + + }else if("2".equals(bo.getValueType())){ + //todo: 掉罗成的接口 + vo.setMonthCompletionValue(BigDecimal.ZERO); + vo.setAccumulatedCompletionValue(BigDecimal.ZERO); + + } + vo.setValueDifference(vo.getMonthCompletionValue().subtract(vo.getMonthEstimatedValue())); + vo.setProjectCompletionRate(BigDecimalUtil.toPercentage(vo.getAccumulatedCompletionValue(), totalValue)); + + vos.add(vo); + + } + TableDataInfo rspData = new TableDataInfo<>(); + rspData.setCode(HttpStatus.HTTP_OK); + rspData.setMsg("查询成功"); + rspData.setRows(vos); + rspData.setTotal(busProjectVoTableDataInfo.getTotal()); + + return TableDataInfo.build(); + } + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/controller/OutValueAllocationController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/controller/OutValueAllocationController.java new file mode 100644 index 00000000..0c3e773b --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/controller/OutValueAllocationController.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.OutValueAllocationVo; +import org.dromara.out.domain.bo.OutValueAllocationBo; +import org.dromara.out.service.IOutValueAllocationService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 项目总产值分配 + * + * @author Lion Li + * @date 2025-08-02 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/out/valueAllocation") +public class OutValueAllocationController extends BaseController { + + private final IOutValueAllocationService outValueAllocationService; + + /** + * 查询项目总产值分配列表 + */ + @SaCheckPermission("out:valueAllocation:list") + @GetMapping("/list") + public TableDataInfo list(OutValueAllocationBo bo, PageQuery pageQuery) { + return outValueAllocationService.queryPageList(bo, pageQuery); + } + + /** + * 导出项目总产值分配列表 + */ + @SaCheckPermission("out:valueAllocation:export") + @Log(title = "项目总产值分配", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(OutValueAllocationBo bo, HttpServletResponse response) { + List list = outValueAllocationService.queryList(bo); + ExcelUtil.exportExcel(list, "项目总产值分配", OutValueAllocationVo.class, response); + } + + /** + * 获取项目总产值分配详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("out:valueAllocation:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(outValueAllocationService.queryById(id)); + } + + /** + * 新增项目总产值分配 + */ + @SaCheckPermission("out:valueAllocation:add") + @Log(title = "项目总产值分配", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody OutValueAllocationBo bo) { + return toAjax(outValueAllocationService.insertByBo(bo)); + } + + /** + * 修改项目总产值分配 + */ + @SaCheckPermission("out:valueAllocation:edit") + @Log(title = "项目总产值分配", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody OutValueAllocationBo bo) { + return toAjax(outValueAllocationService.updateByBo(bo)); + } + + /** + * 删除项目总产值分配 + * + * @param ids 主键串 + */ + @SaCheckPermission("out:valueAllocation:remove") + @Log(title = "项目总产值分配", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(outValueAllocationService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/OutValueAllocation.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/OutValueAllocation.java new file mode 100644 index 00000000..85f75d7d --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/OutValueAllocation.java @@ -0,0 +1,77 @@ +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; + +/** + * 项目总产值分配对象 out_value_allocation + * + * @author Lion Li + * @date 2025-08-02 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("out_value_allocation") +public class OutValueAllocation extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 对甲设计产值 + */ + private BigDecimal ownerDesignValue; + + /** + * 对甲采购产值 + */ + private BigDecimal ownerPurchaseValue; + + /** + * 对甲施工产值 + */ + private BigDecimal ownerConstructionValue; + + /** + * 对甲总产值 + */ + private BigDecimal ownerTotalValue; + + /** + * 对乙设计产值 + */ + private BigDecimal subDesignValue; + + /** + * 对乙采购产值 + */ + private BigDecimal subPurchaseValue; + + /** + * 对乙施工产值 + */ + private BigDecimal subConstructionValue; + + /** + * 对乙总产值 + */ + private BigDecimal subTotalValue; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/bo/OutTableBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/bo/OutTableBo.java index b7dba6c0..ab31785c 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/bo/OutTableBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/bo/OutTableBo.java @@ -8,7 +8,13 @@ import org.dromara.common.core.validate.EditGroup; @Data public class OutTableBo { - @NotBlank(message = "月份(YYYY-MM)不能为空") - private String month; + /** + * 1-设计 2-采购 3-施工 + */ + private String valueType; + /** + * 月份 + */ + private String month; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/bo/OutValueAllocationBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/bo/OutValueAllocationBo.java new file mode 100644 index 00000000..fcfef50a --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/bo/OutValueAllocationBo.java @@ -0,0 +1,85 @@ +package org.dromara.out.domain.bo; + +import org.dromara.out.domain.OutValueAllocation; +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; + +/** + * 项目总产值分配业务对象 out_value_allocation + * + * @author Lion Li + * @date 2025-08-02 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = OutValueAllocation.class, reverseConvertGenerate = false) +public class OutValueAllocationBo 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 ownerDesignValue; + + /** + * 对甲采购产值 + */ + @NotNull(message = "对甲采购产值不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal ownerPurchaseValue; + + /** + * 对甲施工产值 + */ + @NotNull(message = "对甲施工产值不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal ownerConstructionValue; + + /** + * 对甲总产值 + */ + @NotNull(message = "对甲总产值不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal ownerTotalValue; + + /** + * 对乙设计产值 + */ + @NotNull(message = "对乙设计产值不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal subDesignValue; + + /** + * 对乙采购产值 + */ + @NotNull(message = "对乙采购产值不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal subPurchaseValue; + + /** + * 对乙施工产值 + */ + @NotNull(message = "对乙施工产值不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal subConstructionValue; + + /** + * 对乙总产值 + */ + @NotNull(message = "对乙总产值不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal subTotalValue; + + +} 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 index 790caaf0..675940a7 100644 --- 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 @@ -24,23 +24,23 @@ public class OutComparisonOfCompletionAndSettlementVo { * 累计完工产值 */ @ExcelProperty(value = "累计完工产值") - private BigDecimal totalCompletionOutputValue; + private BigDecimal totalCompletionOutputValue= BigDecimal.ZERO; /** * 累计结算产值 */ @ExcelProperty(value = "累计结算产值") - private BigDecimal totalSettlementOutputValue; + private BigDecimal totalSettlementOutputValue= BigDecimal.ZERO; /** * 完工未结算额 */ @ExcelProperty(value = "完工未结算额") - private BigDecimal completionUnsettledAmount; + private BigDecimal completionUnsettledAmount= BigDecimal.ZERO; /** * 完工未结算比例 */ @ExcelProperty(value = "完工未结算比例") - private BigDecimal completionUnsettledRatio; + private BigDecimal completionUnsettledRatio= BigDecimal.ZERO; } 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 index cc23fba3..42e3eae1 100644 --- 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 @@ -24,24 +24,24 @@ public class OutComparisonOfOwnerAndSubVo { * 累计完工产值 */ @ExcelProperty(value = "累计完工产值") - private BigDecimal totalCompletionOutputValue; + private BigDecimal totalCompletionOutputValue= BigDecimal.ZERO; /** * 分包累计结算产值 */ @ExcelProperty(value = "分包累计结算产值") - private BigDecimal subTotalSettlementOutputValue; + private BigDecimal subTotalSettlementOutputValue= BigDecimal.ZERO; /** * 业主累计结算产值 */ @ExcelProperty(value = "业主累计结算产值") - private BigDecimal ownerTotalSettlementOutputValue; + private BigDecimal ownerTotalSettlementOutputValue= BigDecimal.ZERO; /** * 差额 */ @ExcelProperty(value = "差额") - private BigDecimal differenceValue; + private BigDecimal differenceValue= BigDecimal.ZERO; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutConstructionValueVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutConstructionValueVo.java index af986ea0..76fbdfb6 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutConstructionValueVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutConstructionValueVo.java @@ -154,7 +154,7 @@ public class OutConstructionValueVo implements Serializable { /** * 上报人 */ - @ExcelProperty(value = "审核状态") + @ExcelProperty(value = "上报人") @Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "createBy") private String createByName; diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutDesignAndPurchaseValueVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutDesignAndPurchaseValueVo.java new file mode 100644 index 00000000..98f0b10c --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutDesignAndPurchaseValueVo.java @@ -0,0 +1,57 @@ +package org.dromara.out.domain.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class OutDesignAndPurchaseValueVo { + /** + * 项目id + */ + private Long projectId; + + /** + * 项目名称 + */ + @ExcelProperty(value = "项目名称") + private String projectName; + + /** + * 月预计产值 + */ + @ExcelProperty(value = "月预计产值") + private BigDecimal monthEstimatedValue = BigDecimal.ZERO; + + /** + * 月完成产值 + */ + @ExcelProperty(value = "月完成产值") + private BigDecimal monthCompletionValue= BigDecimal.ZERO; + + /** + * 产值差额 + */ + @ExcelProperty(value = "产值差额") + private BigDecimal valueDifference= BigDecimal.ZERO; + + /** + * 项目总产值 + */ + @ExcelProperty(value = "项目总产值") + private BigDecimal totalValue= BigDecimal.ZERO; + + /** + * 累计完成产值 + */ + @ExcelProperty(value = "累计完成产值") + private BigDecimal accumulatedCompletionValue= BigDecimal.ZERO; + + /** + * 项目完成率 + */ + @ExcelProperty(value = "项目完成率") + private BigDecimal projectCompletionRate= BigDecimal.ZERO; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutMonthlyConstructionVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutMonthlyConstructionVo.java index be1597fc..ddb42235 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutMonthlyConstructionVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutMonthlyConstructionVo.java @@ -21,79 +21,79 @@ public class OutMonthlyConstructionVo { * 总产值(万元) */ @ExcelProperty(value = "总产值(万元)") - private BigDecimal totalValue; + private BigDecimal totalValue= BigDecimal.ZERO; /** * 月预计产值(万元) */ @ExcelProperty(value = "月预计产值(万元)") - private BigDecimal monthlyEstimatedValue; + private BigDecimal monthlyEstimatedValue= BigDecimal.ZERO; /** * 第一周完成产值(万元) */ @ExcelProperty(value = "第一周完成产值(万元)") - private BigDecimal firstWeekCompletionValue; + private BigDecimal firstWeekCompletionValue= BigDecimal.ZERO; /** * 第二周完成产值(万元) */ @ExcelProperty(value = "第二周完成产值(万元)") - private BigDecimal secondWeekCompletionValue; + private BigDecimal secondWeekCompletionValue= BigDecimal.ZERO; /** * 第三周完成产值(万元) */ @ExcelProperty(value = "第三周完成产值(万元)") - private BigDecimal thirdWeekCompletionValue; + private BigDecimal thirdWeekCompletionValue= BigDecimal.ZERO; /** * 第四周完成产值(万元) */ @ExcelProperty(value = "第四周完成产值(万元)") - private BigDecimal fourthWeekCompletionValue; + private BigDecimal fourthWeekCompletionValue= BigDecimal.ZERO; /** * 第五周完成产值(万元) */ @ExcelProperty(value = "第五周完成产值(万元)") - private BigDecimal fifthWeekCompletionValue; + private BigDecimal fifthWeekCompletionValue= BigDecimal.ZERO; /** * 完成产值月合计(万元) */ @ExcelProperty(value = "完成产值月合计(万元)") - private BigDecimal totalCompletionValue; + private BigDecimal totalCompletionValue= BigDecimal.ZERO; /** * 产值差额(万元) */ @ExcelProperty(value = "产值差额(万元)") - private BigDecimal valueDifference; + private BigDecimal valueDifference= BigDecimal.ZERO; /** * 预计累计产值(万元) */ @ExcelProperty(value = "预计累计产值(万元)") - private BigDecimal estimatedAccumulatedValue; + private BigDecimal estimatedAccumulatedValue= BigDecimal.ZERO; /** * 累计完成产值(万元) */ @ExcelProperty(value = "累计完成产值(万元)") - private BigDecimal accumulatedCompletionValue; + private BigDecimal accumulatedCompletionValue= BigDecimal.ZERO; /** * 产值差额累计(万元) */ @ExcelProperty(value = "产值差额累计(万元)") - private BigDecimal valueDifferenceAccumulation; + private BigDecimal valueDifferenceAccumulation= BigDecimal.ZERO; /** * 项目完成总进度(百分比)% */ @ExcelProperty(value = "项目完成总进度(百分比)%") - private BigDecimal totalCompletionProgress; + private BigDecimal totalCompletionProgress= BigDecimal.ZERO; } 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 index 092df177..518e3775 100644 --- 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 @@ -1,6 +1,9 @@ package org.dromara.out.domain.vo; import java.math.BigDecimal; + +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; import org.dromara.out.domain.OutSettlementValueOwner; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; @@ -67,4 +70,21 @@ public class OutSettlementValueOwnerVo implements Serializable { private LocalDate settlementDate; + /** + * 上报人Id + */ + private Long createBy; + + /** + * 填报人 + */ + @ExcelProperty(value = "填报人") + @Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "createBy") + private String createByName; + + /** + * 填报时间 + */ + @ExcelProperty(value = "填报时间") + private Date createTime; } 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 index 7d0a9c41..9bbe3233 100644 --- 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 @@ -1,6 +1,9 @@ package org.dromara.out.domain.vo; import java.math.BigDecimal; + +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; import org.dromara.out.domain.OutSettlementValueSubcontract; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; @@ -116,5 +119,21 @@ public class OutSettlementValueSubcontractVo implements Serializable { @ExcelProperty(value = "合同地址") private String contractUrl; + /** + * 上报人Id + */ + private Long createBy; + /** + * 填报人 + */ + @ExcelProperty(value = "填报人") + @Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "createBy") + private String createByName; + + /** + * 填报时间 + */ + @ExcelProperty(value = "填报时间") + private Date createTime; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutValueAllocationVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutValueAllocationVo.java new file mode 100644 index 00000000..da21fc32 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/domain/vo/OutValueAllocationVo.java @@ -0,0 +1,93 @@ +package org.dromara.out.domain.vo; + +import java.math.BigDecimal; +import org.dromara.out.domain.OutValueAllocation; +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; + + + +/** + * 项目总产值分配视图对象 out_value_allocation + * + * @author Lion Li + * @date 2025-08-02 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = OutValueAllocation.class) +public class OutValueAllocationVo 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 ownerDesignValue; + + /** + * 对甲采购产值 + */ + @ExcelProperty(value = "对甲采购产值") + private BigDecimal ownerPurchaseValue; + + /** + * 对甲施工产值 + */ + @ExcelProperty(value = "对甲施工产值") + private BigDecimal ownerConstructionValue; + + /** + * 对甲总产值 + */ + @ExcelProperty(value = "对甲总产值") + private BigDecimal ownerTotalValue; + + /** + * 对乙设计产值 + */ + @ExcelProperty(value = "对乙设计产值") + private BigDecimal subDesignValue; + + /** + * 对乙采购产值 + */ + @ExcelProperty(value = "对乙采购产值") + private BigDecimal subPurchaseValue; + + /** + * 对乙施工产值 + */ + @ExcelProperty(value = "对乙施工产值") + private BigDecimal subConstructionValue; + + /** + * 对乙总产值 + */ + @ExcelProperty(value = "对乙总产值") + private BigDecimal subTotalValue; + + +} 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 7b8acdea..e37c5c0f 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 @@ -17,7 +17,14 @@ import java.math.BigDecimal; 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); + @Select({ + "" + }) + BigDecimal getCompleteValue( @Param("projectId") Long projectId,@Param("month")String month); } 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 236d9dcb..c0026829 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 @@ -16,6 +16,13 @@ import java.math.BigDecimal; */ 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); + @Select({ + "" + }) + BigDecimal getDesignValueByProjectId(@Param("projectId") Long projectId,@Param("planMonth") String planMonth); } 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 index 7bfab6d3..06bdefe0 100644 --- 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 @@ -17,6 +17,13 @@ import java.math.BigDecimal; 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); + @Select({ + "" + }) + BigDecimal getValueByProjectId(@Param("projectId") Long projectId, @Param("month") String month); } 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 index 19a15d0c..c0a81031 100644 --- 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 @@ -17,6 +17,16 @@ import java.math.BigDecimal; 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); + @Select({ + "" + }) + BigDecimal getValueByProjectId(@Param("projectId") Long projectId, @Param("valueType") String valueType,@Param("month")String month); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/mapper/OutValueAllocationMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/mapper/OutValueAllocationMapper.java new file mode 100644 index 00000000..98298827 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/mapper/OutValueAllocationMapper.java @@ -0,0 +1,15 @@ +package org.dromara.out.mapper; + +import org.dromara.out.domain.OutValueAllocation; +import org.dromara.out.domain.vo.OutValueAllocationVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 项目总产值分配Mapper接口 + * + * @author Lion Li + * @date 2025-08-02 + */ +public interface OutValueAllocationMapper extends BaseMapperPlus { + +} 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 bbee6def..7388d5d9 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 @@ -77,5 +77,5 @@ public interface IOutConstructionValueService extends IService{ /** * 根据项目id查询项目已完工的设计产值 */ - BigDecimal getDesignValueByProjectId(Long projectId); + BigDecimal getDesignValueByProjectId(Long projectId,String month); } 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 index afda633e..e3d6e0df 100644 --- 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 @@ -74,5 +74,5 @@ public interface IOutSettlementValueOwnerService extends IService{ + + /** + * 查询项目总产值分配 + * + * @param id 主键 + * @return 项目总产值分配 + */ + OutValueAllocationVo queryById(Long id); + + /** + * 分页查询项目总产值分配列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 项目总产值分配分页列表 + */ + TableDataInfo queryPageList(OutValueAllocationBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的项目总产值分配列表 + * + * @param bo 查询条件 + * @return 项目总产值分配列表 + */ + List queryList(OutValueAllocationBo bo); + + /** + * 新增项目总产值分配 + * + * @param bo 项目总产值分配 + * @return 是否新增成功 + */ + Boolean insertByBo(OutValueAllocationBo bo); + + /** + * 修改项目总产值分配 + * + * @param bo 项目总产值分配 + * @return 是否修改成功 + */ + Boolean updateByBo(OutValueAllocationBo 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/out/service/impl/OutConstructionValueServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/out/service/impl/OutConstructionValueServiceImpl.java index aadaf8d5..dacfeae6 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 @@ -174,8 +174,8 @@ public class OutConstructionValueServiceImpl extends ServiceImpl queryPageList(OutSettlementValueSubcontractBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + result.getRecords().forEach(e -> { + e.setContractorName(contractorService.queryById(e.getContractorId()).getName()); + }); return TableDataInfo.build(result); } @@ -141,7 +147,7 @@ public class OutSettlementValueSubcontractServiceImpl extends ServiceImpl implements IOutValueAllocationService { + + private final OutValueAllocationMapper baseMapper; + + /** + * 查询项目总产值分配 + * + * @param id 主键 + * @return 项目总产值分配 + */ + @Override + public OutValueAllocationVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询项目总产值分配列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 项目总产值分配分页列表 + */ + @Override + public TableDataInfo queryPageList(OutValueAllocationBo 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(OutValueAllocationBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(OutValueAllocationBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(OutValueAllocation::getId); + lqw.eq(bo.getProjectId() != null, OutValueAllocation::getProjectId, bo.getProjectId()); + lqw.eq(bo.getOwnerDesignValue() != null, OutValueAllocation::getOwnerDesignValue, bo.getOwnerDesignValue()); + lqw.eq(bo.getOwnerPurchaseValue() != null, OutValueAllocation::getOwnerPurchaseValue, bo.getOwnerPurchaseValue()); + lqw.eq(bo.getOwnerConstructionValue() != null, OutValueAllocation::getOwnerConstructionValue, bo.getOwnerConstructionValue()); + lqw.eq(bo.getOwnerTotalValue() != null, OutValueAllocation::getOwnerTotalValue, bo.getOwnerTotalValue()); + lqw.eq(bo.getSubDesignValue() != null, OutValueAllocation::getSubDesignValue, bo.getSubDesignValue()); + lqw.eq(bo.getSubPurchaseValue() != null, OutValueAllocation::getSubPurchaseValue, bo.getSubPurchaseValue()); + lqw.eq(bo.getSubConstructionValue() != null, OutValueAllocation::getSubConstructionValue, bo.getSubConstructionValue()); + lqw.eq(bo.getSubTotalValue() != null, OutValueAllocation::getSubTotalValue, bo.getSubTotalValue()); + return lqw; + } + + /** + * 新增项目总产值分配 + * + * @param bo 项目总产值分配 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(OutValueAllocationBo bo) { + OutValueAllocation add = MapstructUtils.convert(bo, OutValueAllocation.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改项目总产值分配 + * + * @param bo 项目总产值分配 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(OutValueAllocationBo bo) { + OutValueAllocation update = MapstructUtils.convert(bo, OutValueAllocation.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(OutValueAllocation entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除项目总产值分配信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/out/OutValueAllocationMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/out/OutValueAllocationMapper.xml new file mode 100644 index 00000000..65c28297 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/out/OutValueAllocationMapper.xml @@ -0,0 +1,7 @@ + + + + +