ycl-pojo/src/main/java/com/ycl/platform/base/AbsForm.java
@@ -16,6 +16,6 @@ @ApiModelProperty(value = "id,修改必传", required = false) @NotBlank(message = "请选择数据", groups = {Update.class}) private String id; private Integer id; } ycl-pojo/src/main/java/com/ycl/platform/domain/form/CalculateReportBackfillForm.java
New file @@ -0,0 +1,38 @@ package com.ycl.platform.domain.form; import jakarta.validation.Valid; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.Data; import java.math.BigDecimal; import java.util.List; /** * 回填扣款金额 * * @author:xp * @date:2024/4/23 15:16 */ @Data public class CalculateReportBackfillForm { @NotNull(message = "请选择核算报告") private Integer id; @Valid @NotEmpty(message = "核算明细不能为空") private List<RecordForm> recordList; @Data public static class RecordForm { @NotNull(message = "明细主键不能为空") private Integer id; /** 每项扣款金额 */ @NotNull(message = "扣款金额不能为空") private BigDecimal deductMoney; } } ycl-pojo/src/main/java/com/ycl/platform/domain/form/CalculateReportForm.java
@@ -23,7 +23,6 @@ * @since 2024-04-23 */ @Data @Accessors(chain = true) @ApiModel(value = "CalculateReport表单", description = "核算报告表单") public class CalculateReportForm extends AbsForm { ycl-pojo/src/main/java/com/ycl/platform/domain/query/CalculateReportQuery.java
@@ -16,8 +16,10 @@ * @since 2024-04-23 */ @Data @Accessors(chain = true) @ApiModel(value = "CalculateReport查询", description = "核算报告查询") public class CalculateReportQuery extends AbsQuery { private String unitName; } ycl-server/src/main/java/com/ycl/platform/controller/CalculateReportController.java
@@ -1,5 +1,6 @@ package com.ycl.platform.controller; import com.ycl.platform.domain.form.CalculateReportBackfillForm; import com.ycl.system.domain.group.Update; import com.ycl.system.domain.group.Add; import org.springframework.security.access.prepost.PreAuthorize; @@ -58,6 +59,13 @@ return calculateReportService.page(query); } @GetMapping("/backfill/money") @ApiOperation(value = "回填扣款金额", notes = "回填扣款金额") @PreAuthorize("@ss.hasPermi('system:calculate:report:backfill')") public Result backfill(@Validated @RequestBody CalculateReportBackfillForm form) { return calculateReportService.backfill(form); } @GetMapping("/{id}") @ApiOperation(value = "详情", notes = "详情") @PreAuthorize("@ss.hasPermi('system:calculate:report:detail')") ycl-server/src/main/java/com/ycl/platform/service/CalculateReportService.java
@@ -2,6 +2,7 @@ import com.ycl.platform.domain.entity.CalculateReport; import com.baomidou.mybatisplus.extension.service.IService; import com.ycl.platform.domain.form.CalculateReportBackfillForm; import com.ycl.system.Result; import com.ycl.platform.domain.form.CalculateReportForm; import com.ycl.platform.domain.query.CalculateReportQuery; @@ -62,4 +63,12 @@ * @return */ Result all(); /** * 回填扣款金额 * * @param form * @return */ Result backfill(CalculateReportBackfillForm form); } ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java
@@ -1,6 +1,10 @@ package com.ycl.platform.service.impl; import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.ycl.platform.domain.entity.CalculateRecord; import com.ycl.platform.domain.entity.CalculateReport; import com.ycl.platform.domain.form.CalculateReportBackfillForm; import com.ycl.platform.mapper.CalculateRecordMapper; import com.ycl.platform.mapper.CalculateReportMapper; import com.ycl.platform.service.CalculateReportService; import com.ycl.system.Result; @@ -8,6 +12,8 @@ import com.ycl.platform.domain.form.CalculateReportForm; import com.ycl.platform.domain.vo.CalculateReportVO; import com.ycl.platform.domain.query.CalculateReportQuery; import java.math.BigDecimal; import java.util.List; import org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -18,6 +24,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import java.util.ArrayList; import java.util.Objects; import java.util.stream.Collectors; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; @@ -34,6 +41,7 @@ public class CalculateReportServiceImpl extends ServiceImpl<CalculateReportMapper, CalculateReport> implements CalculateReportService { private final CalculateReportMapper calculateReportMapper; private final CalculateRecordMapper calculateRecordMapper; /** * 添加 @@ -134,4 +142,26 @@ .collect(Collectors.toList()); return Result.ok().data(vos); } @Override @Transactional(rollbackFor = Exception.class) public Result backfill(CalculateReportBackfillForm form) { CalculateReport report = baseMapper.selectById(form.getId()); if (Objects.isNull(report)) { throw new RuntimeException("该核算报告不存在"); } // 累加得到扣款总额 BigDecimal totalDeduct = form.getRecordList().stream() .map(CalculateReportBackfillForm.RecordForm::getDeductMoney) .reduce(BigDecimal.ZERO, BigDecimal::add); report.setDeductMoney(totalDeduct); baseMapper.updateById(report); form.getRecordList().stream().forEach(item -> { new LambdaUpdateChainWrapper<>(calculateRecordMapper) .eq(CalculateRecord::getId, item.getId()) .set(CalculateRecord::getDeductMoney, item.getDeductMoney()) .update(); }); return Result.ok("操作成功"); } }