From 061b711dc16212c651ce6047145420c50728f213 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期五, 26 四月 2024 15:54:00 +0800 Subject: [PATCH] 核算报告功能完善 --- ycl-common/src/main/java/enumeration/general/CalculateReportStatusEnum.java | 28 +++++++ ycl-server/src/main/java/com/ycl/platform/controller/CalculateReportController.java | 43 +--------- ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRecordVO.java | 12 ++ ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateReportVO.java | 9 ++ ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java | 58 +++++++++++--- ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml | 25 ++++-- ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateReportDetailVO.java | 3 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateReport.java | 11 -- ycl-server/src/main/java/com/ycl/platform/service/CalculateReportService.java | 8 ++ 9 files changed, 129 insertions(+), 68 deletions(-) diff --git a/ycl-common/src/main/java/enumeration/general/CalculateReportStatusEnum.java b/ycl-common/src/main/java/enumeration/general/CalculateReportStatusEnum.java new file mode 100644 index 0000000..61dc9dd --- /dev/null +++ b/ycl-common/src/main/java/enumeration/general/CalculateReportStatusEnum.java @@ -0,0 +1,28 @@ +package enumeration.general; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.Getter; + +/** + * @author锛歺p + * @date锛�2024/4/26 14:44 + */ +@Getter +public enum CalculateReportStatusEnum { + + NOT_PUBLISH("not_publish", "鏈彂甯�"), + PUBLISHED("published", "宸插彂甯�"); + ; + + @EnumValue + @JsonValue + private final String value; + + private final String desc; + + CalculateReportStatusEnum(String value, String desc) { + this.value = value; + this.desc = desc; + } +} diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateReport.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateReport.java index daf7456..da68f47 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateReport.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateReport.java @@ -5,6 +5,7 @@ import java.math.BigDecimal; import java.time.LocalDateTime; import com.ycl.platform.base.AbsEntity; +import enumeration.general.CalculateReportStatusEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -36,14 +37,6 @@ @TableField("deduct_money") private BigDecimal deductMoney; - @ApiModelProperty("鍝勾鐨�") - @TableField("which_year") - private Integer whichYear; - - @ApiModelProperty("鍝湀鐨�") - @TableField("which_month") - private Integer whichMonth; - @ApiModelProperty("淇敼浜�") @TableField("update_by") private String updateBy; @@ -52,5 +45,7 @@ @TableField("latest_time") private LocalDateTime latestTime; + @TableField("status") + private CalculateReportStatusEnum status; } diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRecordVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRecordVO.java index 61523f6..ee49511 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRecordVO.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRecordVO.java @@ -1,9 +1,11 @@ package com.ycl.platform.domain.vo; +import com.fasterxml.jackson.annotation.JsonFormat; import com.ycl.platform.base.AbsVo; import com.ycl.platform.domain.entity.CalculateRecord; import java.math.BigDecimal; +import java.util.Date; import java.util.List; import java.time.LocalDateTime; import org.springframework.lang.NonNull; @@ -20,7 +22,12 @@ * @since 2024-04-23 */ @Data -public class CalculateRecordVO extends AbsVo { +public class CalculateRecordVO { + + private Integer id; + + @JsonFormat(pattern = "yyyy-MM-dd") + private Date createTime; /** 鍚堝悓 */ private Integer contractId; @@ -39,6 +46,9 @@ /** 鍝湀 */ private Integer whichMonth; + /** 鏈�鏂颁竴鏉℃牳绠楁爣璇� */ + private Boolean latest; + public static CalculateRecordVO getVoByEntity(@NonNull CalculateRecord entity, CalculateRecordVO vo) { if(vo == null) { vo = new CalculateRecordVO(); diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateReportDetailVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateReportDetailVO.java index 7ba6405..4f6d8e4 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateReportDetailVO.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateReportDetailVO.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.ycl.platform.base.AbsVo; import com.ycl.platform.domain.entity.CalculateReport; +import enumeration.general.CalculateReportStatusEnum; import lombok.Data; import org.springframework.beans.BeanUtils; import org.springframework.lang.NonNull; @@ -48,6 +49,8 @@ /** 鏍哥畻瑙勫垯 */ private List<CalculateMoneyRuleVO> ruleList; + private CalculateReportStatusEnum status; + public static CalculateReportDetailVO getVoByEntity(@NonNull CalculateReport entity, CalculateReportDetailVO vo) { if(vo == null) { vo = new CalculateReportDetailVO(); diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateReportVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateReportVO.java index d770ebb..ea5e790 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateReportVO.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateReportVO.java @@ -7,6 +7,7 @@ import java.util.List; import java.time.LocalDateTime; +import enumeration.general.CalculateReportStatusEnum; import org.springframework.lang.NonNull; import org.springframework.beans.BeanUtils; import lombok.Data; @@ -41,6 +42,14 @@ /** 鏈�杩戜竴娆℃牳绠楁椂闂� */ private LocalDateTime latestTime; + /** 鑳藉惁鍙戝竷 */ + private Boolean canPublish; + + private CalculateReportStatusEnum status; + + /** 鏈�鏂颁竴娆℃墸娆� */ + private BigDecimal latestDeductMoney; + /** 鏄庣粏 */ private List<CalculateRecordVO> recordList; diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/CalculateReportController.java b/ycl-server/src/main/java/com/ycl/platform/controller/CalculateReportController.java index 2473c04..b2ce714 100644 --- a/ycl-server/src/main/java/com/ycl/platform/controller/CalculateReportController.java +++ b/ycl-server/src/main/java/com/ycl/platform/controller/CalculateReportController.java @@ -33,25 +33,6 @@ private final CalculateReportService calculateReportService; -// @PostMapping -// @ApiOperation(value = "娣诲姞", notes = "娣诲姞") -// public Result add(@RequestBody @Validated(Add.class) CalculateReportForm form) { -// return calculateReportService.add(form); -// } - -// @PutMapping -// @ApiOperation(value = "淇敼", notes = "淇敼") -// public Result update(@RequestBody @Validated(Update.class) CalculateReportForm form) { -// return calculateReportService.update(form); -// } - - @PutMapping - @ApiOperation(value = "淇敼閲戦", notes = "淇敼閲戦") - @PreAuthorize("@ss.hasPermi('system:calculate:report:edit:money')") - public Result adjustMoney(@RequestBody @Validated(Update.class) CalculateReportForm form) { - return calculateReportService.update(form); - } - @GetMapping("/page") @ApiOperation(value = "鍒嗛〉", notes = "鍒嗛〉") @PreAuthorize("@ss.hasPermi('system:calculate:report:page')") @@ -73,23 +54,11 @@ return calculateReportService.detail(id); } -// @GetMapping("/list") -// @ApiOperation(value = "鍒楄〃", notes = "鍒楄〃") -// public Result list() { -// return calculateReportService.all(); -// } - -// @DeleteMapping("/{id}") -// @ApiOperation(value = "ID鍒犻櫎", notes = "ID鍒犻櫎") -// public Result removeById(@PathVariable("id") String id) { -// return calculateReportService.removeById(id); -// } -// -// @DeleteMapping("/batch") -// @ApiOperation(value = "鎵归噺鍒犻櫎", notes = "鎵归噺鍒犻櫎") -// public Result remove(@RequestBody @NotEmpty(message = "璇烽�夋嫨鏁版嵁") List<String> ids) { -// return calculateReportService.remove(ids); -// } - + @PutMapping("/status/{reportId}") + @ApiOperation(value = "淇敼鍙戝竷鐘舵��", notes = "淇敼鍙戝竷鐘舵��") + @PreAuthorize("@ss.hasPermi('system:calculate:report:status')") + public Result updatePublishStatus(@PathVariable("reportId") Long reportId) { + return calculateReportService.updatePublishStatus(reportId); + } } diff --git a/ycl-server/src/main/java/com/ycl/platform/service/CalculateReportService.java b/ycl-server/src/main/java/com/ycl/platform/service/CalculateReportService.java index 9a8933f..2281a39 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/CalculateReportService.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/CalculateReportService.java @@ -71,4 +71,12 @@ * @return */ Result backfill(CalculateReportBackfillForm form); + + /** + * 淇敼鍙戝竷鐘舵�� + * + * @param reportId + * @return + */ + Result updatePublishStatus(Long reportId); } diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java index ee26421..8943806 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java @@ -19,6 +19,7 @@ import java.util.List; import com.ycl.utils.SecurityUtils; +import enumeration.general.CalculateReportStatusEnum; import org.apache.commons.lang3.StringUtils; import com.baomidou.mybatisplus.core.metadata.IPage; import com.ycl.system.page.PageUtil; @@ -33,6 +34,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import lombok.RequiredArgsConstructor; +import org.springframework.util.CollectionUtils; /** * 鏍哥畻鎶ュ憡 鏈嶅姟瀹炵幇绫� @@ -115,6 +117,13 @@ public Result page(CalculateReportQuery query) { IPage<CalculateReportVO> page = PageUtil.getPage(query, CalculateReportVO.class); baseMapper.page(query, page); + page.getRecords().stream().forEach(item -> { + if (Objects.isNull(item)) { + item.setCanPublish(Boolean.FALSE); + } else { + item.setCanPublish(Boolean.TRUE); + } + }); return Result.ok().data(page.getRecords()).total(page.getTotal()); } @@ -127,6 +136,13 @@ public Result detail(Long id) { // 鏄庣粏鍒楄〃 CalculateReportDetailVO detail = baseMapper.getById(id); + if (Objects.nonNull(detail) && ! CollectionUtils.isEmpty(detail.getRecordList())) { + if (CalculateReportStatusEnum.NOT_PUBLISH.equals(detail.getStatus())) { + detail.getRecordList().get(0).setLatest(Boolean.TRUE); + } else { + detail.getRecordList().get(0).setLatest(Boolean.FALSE); + } + } return Result.ok().data(detail); } @@ -138,9 +154,7 @@ public Result all() { List<CalculateReport> entities = baseMapper.selectList(null); List<CalculateReportVO> vos = entities.stream() - .map( - entity -> CalculateReportVO.getVoByEntity(entity, null) - ) + .map(entity -> CalculateReportVO.getVoByEntity(entity, null)) .collect(Collectors.toList()); return Result.ok().data(vos); } @@ -152,18 +166,36 @@ if (Objects.isNull(report)) { throw new RuntimeException("璇ユ牳绠楁姤鍛婁笉瀛樺湪"); } - // 绱姞寰楀埌鎵f鎬婚 - BigDecimal totalDeduct = form.getRecordList().stream() - .map(CalculateReportBackfillForm.RecordForm::getDeductMoney) - .reduce(BigDecimal.ZERO, BigDecimal::add); + if (CalculateReportStatusEnum.PUBLISHED.equals(report.getStatus())) { + throw new RuntimeException("鏈�鏂颁竴娆℃牳绠楁姤鍛婂凡缁忓彂甯冿紝鏃犳硶淇敼"); + } + CalculateReportBackfillForm.RecordForm latestRecord = form.getRecordList().get(0); + CalculateRecord beforeRecord = calculateRecordMapper.selectById(latestRecord.getId()); + if (Objects.isNull(beforeRecord)) { + throw new RuntimeException("鏈�杩戜竴娆℃牳绠楄褰曚笉瀛樺湪"); + } + // 璁$畻寰楀埌鎵f鎬婚锛堝彧绠楁渶杩戜竴鏉★級 + BigDecimal totalDeduct = report.getDeductMoney().subtract(latestRecord.getDeductMoney()).add(latestRecord.getDeductMoney()); 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(); - }); + + beforeRecord.setDeductMoney(latestRecord.getDeductMoney()); + calculateRecordMapper.updateById(beforeRecord); + return Result.ok("鎿嶄綔鎴愬姛"); + } + + @Override + public Result updatePublishStatus(Long reportId) { + CalculateReport report = baseMapper.selectById(reportId); + if (Objects.isNull(report)) { + throw new RuntimeException("璇ユ牳绠楁姤鍛婁笉瀛樺湪"); + } + if (CalculateReportStatusEnum.NOT_PUBLISH.equals(report.getStatus())) { + report.setStatus(CalculateReportStatusEnum.PUBLISHED); + } else if (CalculateReportStatusEnum.PUBLISHED.equals(report.getStatus())) { + report.setStatus(CalculateReportStatusEnum.NOT_PUBLISH); + } + baseMapper.updateById(report); return Result.ok("鎿嶄綔鎴愬姛"); } } diff --git a/ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml index a70a9b1..21c56ba 100644 --- a/ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml +++ b/ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml @@ -13,18 +13,23 @@ <result column="deduct_money" property="deductMoney"/> <result column="latest_time" property="latestTime"/> <result column="update_by" property="updateBy"/> + <result column="can_publish" property="canPublish"/> + <result column="status" property="status"/> + <result column="latestDeductMoney" property="latestDeductMoney"/> </resultMap> <select id="page" resultMap="BaseResultMap"> SELECT - tyu.unit_name, - tc.name, - tcr.id, - tcr.deduct_money, - tcr.create_time, - tcr.update_time, - tcr.calculate_time, - tcr.latest_time + tyu.unit_name, + tc.name, + tcr.id, + tcr.status, + tcr.deduct_money, + tcr.create_time, + tcr.update_time, + tcr.calculate_time, + tcr.latest_time, + (SELECT a.deduct_money FROM (SELECT deduct_money,which_year, which_month FROM t_calculate_record WHERE contract_id = tcr.contract_id ORDER BY which_year, which_month DESC limit 1) a) as latestDeductMoney FROM t_calculate_report tcr INNER JOIN t_contract tc ON tcr.contract_id = tc.id @@ -45,6 +50,7 @@ <result column="contract_id" property="contractId"/> <result column="calculate_time" property="calculateTime"/> <result column="deduct_money" property="deductMoney"/> + <result column="status" property="status"/> <collection property="ruleList" column="contract_id" ofType="com.ycl.platform.domain.vo.CalculateMoneyRuleVO" select="selectRuleByContractId"/> <collection property="recordList" column="contract_id" ofType="com.ycl.platform.domain.vo.CalculateRecordVO" @@ -85,7 +91,8 @@ tcr.deduct_money, tcr.create_time, tcr.update_time, - tcr.calculate_time + tcr.calculate_time, + tcr.status FROM t_calculate_report tcr INNER JOIN t_contract tc ON tcr.contract_id = tc.id INNER JOIN t_yw_unit tyu ON tyu.id = tc.unit_id -- Gitblit v1.8.0