产值
This commit is contained in:
		| @ -2,6 +2,7 @@ package org.dromara.out.controller; | |||||||
|  |  | ||||||
| import cn.dev33.satoken.annotation.SaCheckPermission; | import cn.dev33.satoken.annotation.SaCheckPermission; | ||||||
| import cn.hutool.http.HttpStatus; | import cn.hutool.http.HttpStatus; | ||||||
|  | import jakarta.validation.constraints.NotNull; | ||||||
| import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||||
| import org.dromara.common.core.enums.BusinessStatusEnum; | import org.dromara.common.core.enums.BusinessStatusEnum; | ||||||
| import org.dromara.common.core.enums.FormatsType; | 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.utils.BigDecimalUtil; | ||||||
| import org.dromara.common.web.core.BaseController; | import org.dromara.common.web.core.BaseController; | ||||||
| import org.dromara.out.domain.OutConstructionValue; | import org.dromara.out.domain.OutConstructionValue; | ||||||
|  | import org.dromara.out.domain.OutMonthPlan; | ||||||
| import org.dromara.out.domain.OutMonthPlanAudit; | 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.bo.OutTableBo; | ||||||
| import org.dromara.out.domain.vo.OutComparisonOfCompletionAndSettlementVo; | import org.dromara.out.domain.vo.*; | ||||||
| import org.dromara.out.domain.vo.OutComparisonOfOwnerAndSubVo; |  | ||||||
| import org.dromara.out.domain.vo.OutMonthlyConstructionVo; |  | ||||||
| import org.dromara.out.service.*; | import org.dromara.out.service.*; | ||||||
| import org.dromara.progress.domain.PgsProgressCategory; | import org.dromara.progress.domain.PgsProgressCategory; | ||||||
| import org.dromara.progress.domain.PgsProgressPlanDetail; | import org.dromara.progress.domain.PgsProgressPlanDetail; | ||||||
| @ -29,15 +30,18 @@ import org.springframework.validation.annotation.Validated; | |||||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||||
|  |  | ||||||
| import java.math.BigDecimal; | import java.math.BigDecimal; | ||||||
|  | import java.math.RoundingMode; | ||||||
| import java.time.LocalDate; | import java.time.LocalDate; | ||||||
| import java.time.YearMonth; | import java.time.YearMonth; | ||||||
| import java.time.format.DateTimeFormatter; | import java.time.format.DateTimeFormatter; | ||||||
| import java.time.temporal.TemporalAdjusters; | import java.time.temporal.TemporalAdjusters; | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  | import java.util.Objects; | ||||||
|  | import java.util.stream.Collectors; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 月度产值计划 |  * 报表 | ||||||
|  * |  * | ||||||
|  * @author Lion Li |  * @author Lion Li | ||||||
|  * @date 2025-07-30 |  * @date 2025-07-30 | ||||||
| @ -68,9 +72,9 @@ public class OutTableController extends BaseController { | |||||||
|     /** |     /** | ||||||
|      * 施工产值报表(计划 VS 实际) |      * 施工产值报表(计划 VS 实际) | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("out:table:list") | //    @SaCheckPermission("out:table:list") | ||||||
|     @GetMapping("/monthlyConstruct") |     @GetMapping("/monthlyConstruct") | ||||||
|     public TableDataInfo<OutMonthlyConstructionVo> list(OutTableBo bo, PageQuery pageQuery) { |     public TableDataInfo<OutMonthlyConstructionVo> list(@NotNull String month, PageQuery pageQuery) { | ||||||
|  |  | ||||||
|         //分页查询所有父项目 |         //分页查询所有父项目 | ||||||
|         BusProjectQueryReq busProjectQueryReq = new BusProjectQueryReq(); |         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()); |         LocalDate firstDay = parsedDate.with(TemporalAdjusters.firstDayOfMonth()); | ||||||
|         // 当前月的最后一天 |         // 当前月的最后一天 | ||||||
| @ -98,7 +102,7 @@ public class OutTableController extends BaseController { | |||||||
|         // 方法1: 使用 YearMonth 进行比较(推荐) |         // 方法1: 使用 YearMonth 进行比较(推荐) | ||||||
|         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); |         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); | ||||||
|  |  | ||||||
|         YearMonth month = YearMonth.parse(bo.getMonth(), formatter); |         YearMonth yearMonth = YearMonth.parse(month, formatter); | ||||||
|  |  | ||||||
|         //构建返回数据 |         //构建返回数据 | ||||||
|         List<OutMonthlyConstructionVo> outMonthlyConstructionVos = new ArrayList<>(); |         List<OutMonthlyConstructionVo> outMonthlyConstructionVos = new ArrayList<>(); | ||||||
| @ -126,9 +130,9 @@ public class OutTableController extends BaseController { | |||||||
|                for (OutMonthPlanAudit planAudit : planAudits) { |                for (OutMonthPlanAudit planAudit : planAudits) { | ||||||
|                    YearMonth planMonth = YearMonth.parse(planAudit.getPlanMonth(), formatter); |                    YearMonth planMonth = YearMonth.parse(planAudit.getPlanMonth(), formatter); | ||||||
|                     // 比较大小 |                     // 比较大小 | ||||||
|                    if (planMonth.isBefore(month)) { |                    if (planMonth.isBefore(yearMonth)) { | ||||||
|                        estimatedTotalValue=estimatedTotalValue.add(planAudit.getConstructionValue()); |                        estimatedTotalValue=estimatedTotalValue.add(planAudit.getConstructionValue()); | ||||||
|                    } else if (month.isAfter(planMonth)) { |                    } else if (yearMonth.isAfter(planMonth)) { | ||||||
|  |  | ||||||
|                    } else { |                    } else { | ||||||
|                        estimatedTotalValue = estimatedTotalValue.add(planAudit.getConstructionValue()); |                        estimatedTotalValue = estimatedTotalValue.add(planAudit.getConstructionValue()); | ||||||
| @ -219,8 +223,8 @@ public class OutTableController extends BaseController { | |||||||
|  |  | ||||||
|                 vo.setTotalCompletionProgress(BigDecimalUtil.toPercentage(accumulatedCompletionValue, totalValue)); |                 vo.setTotalCompletionProgress(BigDecimalUtil.toPercentage(accumulatedCompletionValue, totalValue)); | ||||||
|  |  | ||||||
|                 outMonthlyConstructionVos.add(vo); |  | ||||||
|             } |             } | ||||||
|  |             outMonthlyConstructionVos.add(vo); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         TableDataInfo<OutMonthlyConstructionVo> rspData = new TableDataInfo<>(); |         TableDataInfo<OutMonthlyConstructionVo> rspData = new TableDataInfo<>(); | ||||||
| @ -236,7 +240,7 @@ public class OutTableController extends BaseController { | |||||||
|     /** |     /** | ||||||
|      * 分包完工产值与结算产值对比表 |      * 分包完工产值与结算产值对比表 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("out:table:list") | //    @SaCheckPermission("out:table:list") | ||||||
|     @GetMapping("/comparisonOfCompletionAndSettlement") |     @GetMapping("/comparisonOfCompletionAndSettlement") | ||||||
|     public TableDataInfo<OutComparisonOfCompletionAndSettlementVo> comparisonOfCompletionAndSettlement(OutTableBo bo, PageQuery pageQuery) { |     public TableDataInfo<OutComparisonOfCompletionAndSettlementVo> comparisonOfCompletionAndSettlement(OutTableBo bo, PageQuery pageQuery) { | ||||||
|  |  | ||||||
| @ -258,17 +262,32 @@ public class OutTableController extends BaseController { | |||||||
|  |  | ||||||
|             vo.setProjectId(projectVoId); |             vo.setProjectId(projectVoId); | ||||||
|  |  | ||||||
|  |             if("1".equals(bo.getValueType())){ | ||||||
|                 //设计完工产值 |                 //设计完工产值 | ||||||
|             BigDecimal designValue = monthPlanService.getDesignValueByProjectId(projectVoId); |                 BigDecimal designValue = monthPlanService.getDesignValueByProjectId(projectVoId,null); | ||||||
|  |                 vo.setTotalCompletionOutputValue( designValue); | ||||||
|  |             } else if ("2".equals(bo.getValueType())) { | ||||||
|                 //施工完工产值 |                 //施工完工产值 | ||||||
|             BigDecimal constructionValue = constructionValueService.getCompleteValue(projectVoId); |                 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: 掉罗成的接口 |                 //采购完工产值 todo: 掉罗成的接口 | ||||||
|                 BigDecimal purchaseValue = BigDecimal.ZERO; |                 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.setTotalSettlementOutputValue(settlementValue); | ||||||
|             vo.setCompletionUnsettledAmount(vo.getTotalSettlementOutputValue().subtract(vo.getTotalCompletionOutputValue())); |             vo.setCompletionUnsettledAmount(vo.getTotalSettlementOutputValue().subtract(vo.getTotalCompletionOutputValue())); | ||||||
|             vo.setCompletionUnsettledRatio(BigDecimalUtil.toPercentage(vo.getCompletionUnsettledAmount(), vo.getTotalCompletionOutputValue())); |             vo.setCompletionUnsettledRatio(BigDecimalUtil.toPercentage(vo.getCompletionUnsettledAmount(), vo.getTotalCompletionOutputValue())); | ||||||
| @ -288,7 +307,7 @@ public class OutTableController extends BaseController { | |||||||
|     /** |     /** | ||||||
|      * 结算产值 VS 业主结算报表 |      * 结算产值 VS 业主结算报表 | ||||||
|      */ |      */ | ||||||
|     @SaCheckPermission("out:table:list") | //    @SaCheckPermission("out:table:list") | ||||||
|     @GetMapping("/comparisonOfOwnerAndSub") |     @GetMapping("/comparisonOfOwnerAndSub") | ||||||
|     public TableDataInfo<OutComparisonOfOwnerAndSubVo> comparisonOfOwnerAndSub(OutTableBo bo, PageQuery pageQuery){ |     public TableDataInfo<OutComparisonOfOwnerAndSubVo> comparisonOfOwnerAndSub(OutTableBo bo, PageQuery pageQuery){ | ||||||
|         //分页查询所有父项目 |         //分页查询所有父项目 | ||||||
| @ -305,24 +324,23 @@ public class OutTableController extends BaseController { | |||||||
|  |  | ||||||
|             OutComparisonOfOwnerAndSubVo vo = new OutComparisonOfOwnerAndSubVo(); |             OutComparisonOfOwnerAndSubVo vo = new OutComparisonOfOwnerAndSubVo(); | ||||||
|             vo.setProjectName(projectVo.getProjectName()); |             vo.setProjectName(projectVo.getProjectName()); | ||||||
|  |  | ||||||
|             vo.setProjectId(projectVoId); |             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: 掉罗成的接口 |             //采购完工产值 todo: 掉罗成的接口 | ||||||
|             BigDecimal purchaseValue = BigDecimal.ZERO; |             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,null,bo.getMonth()); | ||||||
|             vo.setSubTotalSettlementOutputValue(settlementValue); |             vo.setSubTotalSettlementOutputValue(settlementValue); | ||||||
|  |  | ||||||
|             //业主结算产值 |             //业主结算产值 | ||||||
|             BigDecimal ownerSettlementValue = settlementValueOwnerService.getValueByProjectId(projectVoId); |             BigDecimal ownerSettlementValue = settlementValueOwnerService.getValueByProjectId(projectVoId,bo.getMonth()); | ||||||
|             vo.setOwnerTotalSettlementOutputValue(ownerSettlementValue); |             vo.setOwnerTotalSettlementOutputValue(ownerSettlementValue); | ||||||
|  |  | ||||||
|             vos.add(vo); |             vos.add(vo); | ||||||
| @ -338,5 +356,81 @@ public class OutTableController extends BaseController { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 采购设计产值报表(计划 VS 实际) | ||||||
|  |      */ | ||||||
|  | //    @SaCheckPermission("out:table:list") | ||||||
|  |     @GetMapping("/monthlyPurchase") | ||||||
|  |     public TableDataInfo<OutDesignAndPurchaseValueVo> monthlyPurchase(OutTableBo bo, PageQuery pageQuery){ | ||||||
|  |  | ||||||
|  |         //分页查询所有父项目 | ||||||
|  |         BusProjectQueryReq busProjectQueryReq = new BusProjectQueryReq(); | ||||||
|  |         busProjectQueryReq.setPId(0L); | ||||||
|  |         TableDataInfo<BusProjectVo> busProjectVoTableDataInfo = projectService.queryPageList(busProjectQueryReq, pageQuery); | ||||||
|  |         List<BusProjectVo> rows = busProjectVoTableDataInfo.getRows(); | ||||||
|  |         List<OutDesignAndPurchaseValueVo> vos = new ArrayList<>(); | ||||||
|  |  | ||||||
|  |         for (BusProjectVo projectVo : rows) { | ||||||
|  |             OutDesignAndPurchaseValueVo vo = new OutDesignAndPurchaseValueVo(); | ||||||
|  |             vo.setProjectName(projectVo.getProjectName()); | ||||||
|  |             vo.setProjectId(projectVo.getId()); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |             List<OutMonthPlan> 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<OutMonthPlan> 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<OutDesignAndPurchaseValueVo> rspData = new TableDataInfo<>(); | ||||||
|  |         rspData.setCode(HttpStatus.HTTP_OK); | ||||||
|  |         rspData.setMsg("查询成功"); | ||||||
|  |         rspData.setRows(vos); | ||||||
|  |         rspData.setTotal(busProjectVoTableDataInfo.getTotal()); | ||||||
|  |  | ||||||
|  |         return TableDataInfo.build(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -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<OutValueAllocationVo> 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<OutValueAllocationVo> list = outValueAllocationService.queryList(bo); | ||||||
|  |         ExcelUtil.exportExcel(list, "项目总产值分配", OutValueAllocationVo.class, response); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 获取项目总产值分配详细信息 | ||||||
|  |      * | ||||||
|  |      * @param id 主键 | ||||||
|  |      */ | ||||||
|  |     @SaCheckPermission("out:valueAllocation:query") | ||||||
|  |     @GetMapping("/{id}") | ||||||
|  |     public R<OutValueAllocationVo> 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<Void> 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<Void> 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<Void> remove(@NotEmpty(message = "主键不能为空") | ||||||
|  |                           @PathVariable Long[] ids) { | ||||||
|  |         return toAjax(outValueAllocationService.deleteWithValidByIds(List.of(ids), true)); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -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; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -8,7 +8,13 @@ import org.dromara.common.core.validate.EditGroup; | |||||||
| @Data | @Data | ||||||
| public class OutTableBo { | public class OutTableBo { | ||||||
|  |  | ||||||
|     @NotBlank(message = "月份(YYYY-MM)不能为空") |     /** | ||||||
|     private String month; |      * 1-设计 2-采购 3-施工 | ||||||
|  |      */ | ||||||
|  |     private String valueType; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 月份 | ||||||
|  |      */ | ||||||
|  |     private String month; | ||||||
| } | } | ||||||
|  | |||||||
| @ -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; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -24,23 +24,23 @@ public class OutComparisonOfCompletionAndSettlementVo { | |||||||
|      * 累计完工产值 |      * 累计完工产值 | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "累计完工产值") |     @ExcelProperty(value = "累计完工产值") | ||||||
|     private BigDecimal totalCompletionOutputValue; |     private BigDecimal totalCompletionOutputValue= BigDecimal.ZERO; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 累计结算产值 |      * 累计结算产值 | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "累计结算产值") |     @ExcelProperty(value = "累计结算产值") | ||||||
|     private BigDecimal totalSettlementOutputValue; |     private BigDecimal totalSettlementOutputValue= BigDecimal.ZERO; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 完工未结算额 |      * 完工未结算额 | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "完工未结算额") |     @ExcelProperty(value = "完工未结算额") | ||||||
|     private BigDecimal  completionUnsettledAmount; |     private BigDecimal  completionUnsettledAmount= BigDecimal.ZERO; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 完工未结算比例 |      * 完工未结算比例 | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "完工未结算比例") |     @ExcelProperty(value = "完工未结算比例") | ||||||
|     private BigDecimal completionUnsettledRatio; |     private BigDecimal completionUnsettledRatio= BigDecimal.ZERO; | ||||||
| } | } | ||||||
|  | |||||||
| @ -24,24 +24,24 @@ public class OutComparisonOfOwnerAndSubVo { | |||||||
|      * 累计完工产值 |      * 累计完工产值 | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "累计完工产值") |     @ExcelProperty(value = "累计完工产值") | ||||||
|     private BigDecimal totalCompletionOutputValue; |     private BigDecimal totalCompletionOutputValue= BigDecimal.ZERO; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 分包累计结算产值 |      * 分包累计结算产值 | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "分包累计结算产值") |     @ExcelProperty(value = "分包累计结算产值") | ||||||
|     private BigDecimal subTotalSettlementOutputValue; |     private BigDecimal subTotalSettlementOutputValue= BigDecimal.ZERO; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 业主累计结算产值 |      * 业主累计结算产值 | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "业主累计结算产值") |     @ExcelProperty(value = "业主累计结算产值") | ||||||
|     private BigDecimal ownerTotalSettlementOutputValue; |     private BigDecimal ownerTotalSettlementOutputValue= BigDecimal.ZERO; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 差额 |      * 差额 | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "差额") |     @ExcelProperty(value = "差额") | ||||||
|     private BigDecimal  differenceValue; |     private BigDecimal  differenceValue= BigDecimal.ZERO; | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -154,7 +154,7 @@ public class OutConstructionValueVo implements Serializable { | |||||||
|     /** |     /** | ||||||
|      * 上报人 |      * 上报人 | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "审核状态") |     @ExcelProperty(value = "上报人") | ||||||
|     @Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "createBy") |     @Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "createBy") | ||||||
|     private String createByName; |     private String createByName; | ||||||
|  |  | ||||||
|  | |||||||
| @ -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; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -21,79 +21,79 @@ public class OutMonthlyConstructionVo { | |||||||
|      * 总产值(万元) |      * 总产值(万元) | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "总产值(万元)") |     @ExcelProperty(value = "总产值(万元)") | ||||||
|     private BigDecimal totalValue; |     private BigDecimal totalValue= BigDecimal.ZERO; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 月预计产值(万元) |      * 月预计产值(万元) | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "月预计产值(万元)") |     @ExcelProperty(value = "月预计产值(万元)") | ||||||
|     private BigDecimal monthlyEstimatedValue; |     private BigDecimal monthlyEstimatedValue= BigDecimal.ZERO; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 第一周完成产值(万元) |      * 第一周完成产值(万元) | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "第一周完成产值(万元)") |     @ExcelProperty(value = "第一周完成产值(万元)") | ||||||
|     private BigDecimal firstWeekCompletionValue; |     private BigDecimal firstWeekCompletionValue= BigDecimal.ZERO; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 第二周完成产值(万元) |      * 第二周完成产值(万元) | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "第二周完成产值(万元)") |     @ExcelProperty(value = "第二周完成产值(万元)") | ||||||
|     private BigDecimal secondWeekCompletionValue; |     private BigDecimal secondWeekCompletionValue= BigDecimal.ZERO; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 第三周完成产值(万元) |      * 第三周完成产值(万元) | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "第三周完成产值(万元)") |     @ExcelProperty(value = "第三周完成产值(万元)") | ||||||
|     private BigDecimal thirdWeekCompletionValue; |     private BigDecimal thirdWeekCompletionValue= BigDecimal.ZERO; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 第四周完成产值(万元) |      * 第四周完成产值(万元) | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "第四周完成产值(万元)") |     @ExcelProperty(value = "第四周完成产值(万元)") | ||||||
|     private BigDecimal fourthWeekCompletionValue; |     private BigDecimal fourthWeekCompletionValue= BigDecimal.ZERO; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 第五周完成产值(万元) |      * 第五周完成产值(万元) | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "第五周完成产值(万元)") |     @ExcelProperty(value = "第五周完成产值(万元)") | ||||||
|     private BigDecimal fifthWeekCompletionValue; |     private BigDecimal fifthWeekCompletionValue= BigDecimal.ZERO; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 完成产值月合计(万元) |      * 完成产值月合计(万元) | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "完成产值月合计(万元)") |     @ExcelProperty(value = "完成产值月合计(万元)") | ||||||
|     private BigDecimal totalCompletionValue; |     private BigDecimal totalCompletionValue= BigDecimal.ZERO; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 产值差额(万元) |      * 产值差额(万元) | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "产值差额(万元)") |     @ExcelProperty(value = "产值差额(万元)") | ||||||
|     private BigDecimal valueDifference; |     private BigDecimal valueDifference= BigDecimal.ZERO; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 预计累计产值(万元) |      * 预计累计产值(万元) | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "预计累计产值(万元)") |     @ExcelProperty(value = "预计累计产值(万元)") | ||||||
|     private BigDecimal estimatedAccumulatedValue; |     private BigDecimal estimatedAccumulatedValue= BigDecimal.ZERO; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 累计完成产值(万元) |      * 累计完成产值(万元) | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "累计完成产值(万元)") |     @ExcelProperty(value = "累计完成产值(万元)") | ||||||
|     private BigDecimal accumulatedCompletionValue; |     private BigDecimal accumulatedCompletionValue= BigDecimal.ZERO; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 产值差额累计(万元) |      * 产值差额累计(万元) | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "产值差额累计(万元)") |     @ExcelProperty(value = "产值差额累计(万元)") | ||||||
|     private BigDecimal valueDifferenceAccumulation; |     private BigDecimal valueDifferenceAccumulation= BigDecimal.ZERO; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 项目完成总进度(百分比)% |      * 项目完成总进度(百分比)% | ||||||
|      */ |      */ | ||||||
|     @ExcelProperty(value = "项目完成总进度(百分比)%") |     @ExcelProperty(value = "项目完成总进度(百分比)%") | ||||||
|     private BigDecimal totalCompletionProgress; |     private BigDecimal totalCompletionProgress= BigDecimal.ZERO; | ||||||
|  |  | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,6 +1,9 @@ | |||||||
| package org.dromara.out.domain.vo; | package org.dromara.out.domain.vo; | ||||||
|  |  | ||||||
| import java.math.BigDecimal; | 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 org.dromara.out.domain.OutSettlementValueOwner; | ||||||
| import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | ||||||
| import com.alibaba.excel.annotation.ExcelProperty; | import com.alibaba.excel.annotation.ExcelProperty; | ||||||
| @ -67,4 +70,21 @@ public class OutSettlementValueOwnerVo implements Serializable { | |||||||
|     private LocalDate settlementDate; |     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; | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,6 +1,9 @@ | |||||||
| package org.dromara.out.domain.vo; | package org.dromara.out.domain.vo; | ||||||
|  |  | ||||||
| import java.math.BigDecimal; | 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 org.dromara.out.domain.OutSettlementValueSubcontract; | ||||||
| import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; | ||||||
| import com.alibaba.excel.annotation.ExcelProperty; | import com.alibaba.excel.annotation.ExcelProperty; | ||||||
| @ -116,5 +119,21 @@ public class OutSettlementValueSubcontractVo implements Serializable { | |||||||
|     @ExcelProperty(value = "合同地址") |     @ExcelProperty(value = "合同地址") | ||||||
|     private String contractUrl; |     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; | ||||||
| } | } | ||||||
|  | |||||||
| @ -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; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -17,7 +17,14 @@ import java.math.BigDecimal; | |||||||
| public interface OutConstructionValueMapper extends BaseMapperPlus<OutConstructionValue, OutConstructionValueVo> { | public interface OutConstructionValueMapper extends BaseMapperPlus<OutConstructionValue, OutConstructionValueVo> { | ||||||
|  |  | ||||||
|  |  | ||||||
|     @Select("select sum(out_value) from  out_construction_value where project_id = #{projectId} and audit_status = 'finish'  ") |     @Select({ | ||||||
|     BigDecimal getCompleteValue( @Param("projectId") Long projectId); |         "<script>", | ||||||
|  |         "select sum(out_value) from out_construction_value where project_id = #{projectId} and audit_status = 'finish'", | ||||||
|  |         "<if test='month != null and month != \"\"'>", | ||||||
|  |         "and DATE_FORMAT(report_date, '%Y-%m') = #{month}", | ||||||
|  |         "</if>", | ||||||
|  |         "</script>" | ||||||
|  |     }) | ||||||
|  |     BigDecimal getCompleteValue( @Param("projectId") Long projectId,@Param("month")String month); | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -16,6 +16,13 @@ import java.math.BigDecimal; | |||||||
|  */ |  */ | ||||||
| public interface OutMonthPlanMapper extends BaseMapperPlus<OutMonthPlan, OutMonthPlanVo> { | public interface OutMonthPlanMapper extends BaseMapperPlus<OutMonthPlan, OutMonthPlanVo> { | ||||||
|  |  | ||||||
|     @Select("select sum(complete_value) from out_month_plan where value_type = 1 and complete_audit_status = 'finish' and project_id = #{projectId}") |     @Select({ | ||||||
|     BigDecimal getDesignValueByProjectId(@Param("projectId") Long projectId); |         "<script>", | ||||||
|  |         "select sum(complete_value) from out_month_plan where value_type = 1 and complete_audit_status = 'finish' and project_id = #{projectId}", | ||||||
|  |         "<if test='planMonth != null and planMonth != \"\"'>", | ||||||
|  |         "and plan_month = #{planMonth}", | ||||||
|  |         "</if>", | ||||||
|  |         "</script>" | ||||||
|  |     }) | ||||||
|  |     BigDecimal getDesignValueByProjectId(@Param("projectId") Long projectId,@Param("planMonth") String  planMonth); | ||||||
| } | } | ||||||
|  | |||||||
| @ -17,6 +17,13 @@ import java.math.BigDecimal; | |||||||
| public interface OutSettlementValueOwnerMapper extends BaseMapperPlus<OutSettlementValueOwner, OutSettlementValueOwnerVo> { | public interface OutSettlementValueOwnerMapper extends BaseMapperPlus<OutSettlementValueOwner, OutSettlementValueOwnerVo> { | ||||||
|  |  | ||||||
|  |  | ||||||
|     @Select("select sum(settlement_value) from out_settlement_value_owner where project_id = #{projectId}") |     @Select({ | ||||||
|     BigDecimal getValueByProjectId(@Param("projectId") Long projectId); |         "<script>", | ||||||
|  |         "select sum(settlement_value) from out_settlement_value_owner where project_id = #{projectId}", | ||||||
|  |         "<if test='month != null and month != \"\"'>", | ||||||
|  |         "and DATE_FORMAT(settlement_date, '%Y-%m') = #{month}", | ||||||
|  |         "</if>", | ||||||
|  |         "</script>" | ||||||
|  |     }) | ||||||
|  |     BigDecimal getValueByProjectId(@Param("projectId") Long projectId, @Param("month") String month); | ||||||
| } | } | ||||||
|  | |||||||
| @ -17,6 +17,16 @@ import java.math.BigDecimal; | |||||||
| public interface OutSettlementValueSubcontractMapper extends BaseMapperPlus<OutSettlementValueSubcontract, OutSettlementValueSubcontractVo> { | public interface OutSettlementValueSubcontractMapper extends BaseMapperPlus<OutSettlementValueSubcontract, OutSettlementValueSubcontractVo> { | ||||||
|  |  | ||||||
|  |  | ||||||
|     @Select("select sum(settlement_value) from out_settlement_value_subcontract where project_id = #{projectId} ") |     @Select({ | ||||||
|     BigDecimal getValueByProjectId(@Param("projectId") Long projectId); |         "<script>", | ||||||
|  |         "select sum(settlement_value) from out_settlement_value_subcontract where project_id = #{projectId}", | ||||||
|  |         "<if test='valueType != null and valueType != \"\"'>", | ||||||
|  |         "and value_type = #{valueType}", | ||||||
|  |         "</if>", | ||||||
|  |         "<if test='month != null and month != \"\"'>", | ||||||
|  |         "and settlement_month = #{month}", | ||||||
|  |         "</if>", | ||||||
|  |         "</script>" | ||||||
|  |     }) | ||||||
|  |     BigDecimal getValueByProjectId(@Param("projectId") Long projectId, @Param("valueType") String valueType,@Param("month")String month); | ||||||
| } | } | ||||||
|  | |||||||
| @ -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<OutValueAllocation, OutValueAllocationVo> { | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -77,5 +77,5 @@ public interface IOutConstructionValueService extends IService<OutConstructionVa | |||||||
|      * @param projectId 项目id |      * @param projectId 项目id | ||||||
|      * @return 项目施工完成值 |      * @return 项目施工完成值 | ||||||
|      */ |      */ | ||||||
|     BigDecimal getCompleteValue(Long projectId); |     BigDecimal getCompleteValue(Long projectId,String month); | ||||||
| } | } | ||||||
|  | |||||||
| @ -87,6 +87,6 @@ public interface IOutMonthPlanService extends IService<OutMonthPlan>{ | |||||||
|     /** |     /** | ||||||
|      * 根据项目id查询项目已完工的设计产值 |      * 根据项目id查询项目已完工的设计产值 | ||||||
|      */ |      */ | ||||||
|     BigDecimal getDesignValueByProjectId(Long projectId); |     BigDecimal getDesignValueByProjectId(Long projectId,String month); | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -74,5 +74,5 @@ public interface IOutSettlementValueOwnerService extends IService<OutSettlementV | |||||||
|     /** |     /** | ||||||
|      * 根据项目id获取项目结算产值 |      * 根据项目id获取项目结算产值 | ||||||
|      */ |      */ | ||||||
|     BigDecimal getValueByProjectId(Long projectId); |     BigDecimal getValueByProjectId(Long projectId,String month); | ||||||
| } | } | ||||||
|  | |||||||
| @ -73,5 +73,5 @@ public interface IOutSettlementValueSubcontractService extends IService<OutSettl | |||||||
|     /** |     /** | ||||||
|      * 根据项目id获取项目结算产值 |      * 根据项目id获取项目结算产值 | ||||||
|      */ |      */ | ||||||
|     BigDecimal getValueByProjectId(Long projectId); |     BigDecimal getValueByProjectId(Long projectId,String valueType,String month); | ||||||
| } | } | ||||||
|  | |||||||
| @ -0,0 +1,70 @@ | |||||||
|  | package org.dromara.out.service; | ||||||
|  |  | ||||||
|  | import org.dromara.out.domain.vo.OutValueAllocationVo; | ||||||
|  | import org.dromara.out.domain.bo.OutValueAllocationBo; | ||||||
|  | import org.dromara.out.domain.OutValueAllocation; | ||||||
|  | import org.dromara.common.mybatis.core.page.TableDataInfo; | ||||||
|  | import org.dromara.common.mybatis.core.page.PageQuery; | ||||||
|  |  | ||||||
|  | import com.baomidou.mybatisplus.extension.service.IService; | ||||||
|  | import java.util.Collection; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 项目总产值分配Service接口 | ||||||
|  |  * | ||||||
|  |  * @author Lion Li | ||||||
|  |  * @date 2025-08-02 | ||||||
|  |  */ | ||||||
|  | public interface IOutValueAllocationService extends IService<OutValueAllocation>{ | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 查询项目总产值分配 | ||||||
|  |      * | ||||||
|  |      * @param id 主键 | ||||||
|  |      * @return 项目总产值分配 | ||||||
|  |      */ | ||||||
|  |     OutValueAllocationVo queryById(Long id); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 分页查询项目总产值分配列表 | ||||||
|  |      * | ||||||
|  |      * @param bo        查询条件 | ||||||
|  |      * @param pageQuery 分页参数 | ||||||
|  |      * @return 项目总产值分配分页列表 | ||||||
|  |      */ | ||||||
|  |     TableDataInfo<OutValueAllocationVo> queryPageList(OutValueAllocationBo bo, PageQuery pageQuery); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 查询符合条件的项目总产值分配列表 | ||||||
|  |      * | ||||||
|  |      * @param bo 查询条件 | ||||||
|  |      * @return 项目总产值分配列表 | ||||||
|  |      */ | ||||||
|  |     List<OutValueAllocationVo> 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<Long> ids, Boolean isValid); | ||||||
|  | } | ||||||
| @ -174,8 +174,8 @@ public class OutConstructionValueServiceImpl extends ServiceImpl<OutConstruction | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public BigDecimal getCompleteValue(Long projectId) { |     public BigDecimal getCompleteValue(Long projectId, String month) { | ||||||
|         return baseMapper.getCompleteValue(projectId); |         return baseMapper.getCompleteValue(projectId,month); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|  | |||||||
| @ -192,8 +192,8 @@ public class OutMonthPlanServiceImpl extends ServiceImpl<OutMonthPlanMapper, Out | |||||||
|  |  | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public BigDecimal getDesignValueByProjectId(Long projectId) { |     public BigDecimal getDesignValueByProjectId(Long projectId,String month) { | ||||||
|         return baseMapper.getDesignValueByProjectId(projectId); |         return baseMapper.getDesignValueByProjectId(projectId,month); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|  | |||||||
| @ -134,7 +134,7 @@ public class OutSettlementValueOwnerServiceImpl extends ServiceImpl<OutSettlemen | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public BigDecimal getValueByProjectId(Long projectId) { |     public BigDecimal getValueByProjectId(Long projectId,String month) { | ||||||
|         return baseMapper.getValueByProjectId(projectId); |         return baseMapper.getValueByProjectId(projectId,month); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||||||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||||
| import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||||
| import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||||
|  | import org.dromara.contractor.service.ISubContractorService; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| import org.dromara.out.domain.bo.OutSettlementValueSubcontractBo; | import org.dromara.out.domain.bo.OutSettlementValueSubcontractBo; | ||||||
| import org.dromara.out.domain.vo.OutSettlementValueSubcontractVo; | import org.dromara.out.domain.vo.OutSettlementValueSubcontractVo; | ||||||
| @ -33,6 +34,8 @@ public class OutSettlementValueSubcontractServiceImpl extends ServiceImpl<OutSet | |||||||
|  |  | ||||||
|     private final OutSettlementValueSubcontractMapper baseMapper; |     private final OutSettlementValueSubcontractMapper baseMapper; | ||||||
|  |  | ||||||
|  |     private final ISubContractorService contractorService; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 查询结算产值登记(对乙) |      * 查询结算产值登记(对乙) | ||||||
|      * |      * | ||||||
| @ -55,6 +58,9 @@ public class OutSettlementValueSubcontractServiceImpl extends ServiceImpl<OutSet | |||||||
|     public TableDataInfo<OutSettlementValueSubcontractVo> queryPageList(OutSettlementValueSubcontractBo bo, PageQuery pageQuery) { |     public TableDataInfo<OutSettlementValueSubcontractVo> queryPageList(OutSettlementValueSubcontractBo bo, PageQuery pageQuery) { | ||||||
|         LambdaQueryWrapper<OutSettlementValueSubcontract> lqw = buildQueryWrapper(bo); |         LambdaQueryWrapper<OutSettlementValueSubcontract> lqw = buildQueryWrapper(bo); | ||||||
|         Page<OutSettlementValueSubcontractVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); |         Page<OutSettlementValueSubcontractVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); | ||||||
|  |         result.getRecords().forEach(e -> { | ||||||
|  |             e.setContractorName(contractorService.queryById(e.getContractorId()).getName()); | ||||||
|  |         }); | ||||||
|         return TableDataInfo.build(result); |         return TableDataInfo.build(result); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @ -141,7 +147,7 @@ public class OutSettlementValueSubcontractServiceImpl extends ServiceImpl<OutSet | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public BigDecimal getValueByProjectId(Long projectId) { |     public BigDecimal getValueByProjectId(Long projectId,String valueType,String month) { | ||||||
|         return baseMapper.getValueByProjectId(projectId); |         return baseMapper.getValueByProjectId(projectId, valueType,month); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -0,0 +1,139 @@ | |||||||
|  | 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.OutValueAllocationBo; | ||||||
|  | import org.dromara.out.domain.vo.OutValueAllocationVo; | ||||||
|  | import org.dromara.out.domain.OutValueAllocation; | ||||||
|  | import org.dromara.out.mapper.OutValueAllocationMapper; | ||||||
|  | import org.dromara.out.service.IOutValueAllocationService; | ||||||
|  |  | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Map; | ||||||
|  | import java.util.Collection; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 项目总产值分配Service业务层处理 | ||||||
|  |  * | ||||||
|  |  * @author Lion Li | ||||||
|  |  * @date 2025-08-02 | ||||||
|  |  */ | ||||||
|  | @RequiredArgsConstructor | ||||||
|  | @Service | ||||||
|  | public class OutValueAllocationServiceImpl extends ServiceImpl<OutValueAllocationMapper, OutValueAllocation> 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<OutValueAllocationVo> queryPageList(OutValueAllocationBo bo, PageQuery pageQuery) { | ||||||
|  |         LambdaQueryWrapper<OutValueAllocation> lqw = buildQueryWrapper(bo); | ||||||
|  |         Page<OutValueAllocationVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); | ||||||
|  |         return TableDataInfo.build(result); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 查询符合条件的项目总产值分配列表 | ||||||
|  |      * | ||||||
|  |      * @param bo 查询条件 | ||||||
|  |      * @return 项目总产值分配列表 | ||||||
|  |      */ | ||||||
|  |     @Override | ||||||
|  |     public List<OutValueAllocationVo> queryList(OutValueAllocationBo bo) { | ||||||
|  |         LambdaQueryWrapper<OutValueAllocation> lqw = buildQueryWrapper(bo); | ||||||
|  |         return baseMapper.selectVoList(lqw); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private LambdaQueryWrapper<OutValueAllocation> buildQueryWrapper(OutValueAllocationBo bo) { | ||||||
|  |         Map<String, Object> params = bo.getParams(); | ||||||
|  |         LambdaQueryWrapper<OutValueAllocation> 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<Long> ids, Boolean isValid) { | ||||||
|  |         if(isValid){ | ||||||
|  |             //TODO 做一些业务上的校验,判断是否需要校验 | ||||||
|  |         } | ||||||
|  |         return baseMapper.deleteByIds(ids) > 0; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,7 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8" ?> | ||||||
|  | <!DOCTYPE mapper | ||||||
|  | PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | ||||||
|  | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | ||||||
|  | <mapper namespace="org.dromara.out.mapper.OutValueAllocationMapper"> | ||||||
|  |  | ||||||
|  | </mapper> | ||||||
		Reference in New Issue
	
	Block a user
	 zt
					zt