From b7dcd397a426496cb9f961f2cb69152815cc169f Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 26 四月 2024 13:44:47 +0800
Subject: [PATCH] 核算报告功能实现

---
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateMoneyRuleVO.java               |   41 ++
 ycl-server/src/main/java/com/ycl/platform/controller/CalculateReportController.java       |    4 
 ycl-server/src/main/java/com/ycl/platform/mapper/CalculateRecordMapper.java               |    7 
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateReportVO.java                  |    2 
 ycl-server/src/main/java/com/ycl/platform/mapper/CalculateMoneyRuleMapper.java            |   62 ---
 ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml                       |   94 +++++-
 ycl-pojo/src/main/java/com/ycl/platform/domain/query/CalculateMoneyRuleQuery.java         |   23 +
 ycl-server/src/main/java/com/ycl/platform/mapper/CalculateReportMapper.java               |   13 
 ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateMoneyRuleServiceImpl.java |  158 +++++++---
 /dev/null                                                                                 |   62 ----
 ycl-pojo/src/main/java/com/ycl/platform/domain/form/CalculateMoneyRuleForm.java           |   47 +++
 ycl-server/src/main/resources/mapper/zgyw/CalculateRecordMapper.xml                       |   31 -
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateRecordVO.java                  |   11 
 ycl-server/src/main/java/com/ycl/platform/service/CalculateMoneyRuleService.java          |   65 ++++
 ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java    |   17 
 ycl-pojo/src/main/java/com/ycl/platform/domain/form/CalculateReportForm.java              |    4 
 ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateReportDetailVO.java            |   59 ++++
 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateReport.java                |    2 
 ycl-server/src/main/java/com/ycl/platform/service/CalculateReportService.java             |    6 
 ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateMoneyRule.java             |  120 +------
 20 files changed, 480 insertions(+), 348 deletions(-)

diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateMoneyRule.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateMoneyRule.java
index 9fba8f0..75073e6 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateMoneyRule.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CalculateMoneyRule.java
@@ -1,110 +1,38 @@
 package com.ycl.platform.domain.entity;
 
-import annotation.Excel;
-import com.ycl.system.domain.TreeEntity;
-import org.apache.commons.lang.builder.ToStringBuilder;
-import org.apache.commons.lang.builder.ToStringStyle;
-
-import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.ycl.platform.base.AbsEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
 
 /**
- * 鏍哥畻瑙勫垯瀵硅薄 t_calculate_rule
+ * 閽辨牳绠楄鍒欒〃
  *
- * @author ruoyi
- * @date 2024-04-03
+ * @author xp
+ * @since 2024-04-26
  */
-public class CalculateMoneyRule extends TreeEntity
-{
+@Data
+@Accessors(chain = true)
+@TableName("t_calculate_money_rule")
+@ApiModel(value = "CalculateMoneyRule瀵硅薄", description = "閽辨牳绠楄鍒欒〃")
+public class CalculateMoneyRule extends AbsEntity {
+
     private static final long serialVersionUID = 1L;
 
-    /**  */
-    private Long id;
+    @ApiModelProperty("鍚堝悓ID")
+    @TableField("contract_id")
+    private Integer contractId;
 
-    /**  */
-    @Excel(name = "")
-    private String name;
+    @ApiModelProperty("鍒嗘暟鏉′欢")
+    @TableField("score_condition")
+    private String scoreCondition;
 
-    /**  */
-    @Excel(name = "")
-    private Long templateId;
-
-    /** 鍗曚綅id */
-    @Excel(name = "鍗曚綅id")
-    private Long unitId;
-
-    /** 姣忓皯1%鎵e綋鏈堟�绘湇鍔¤垂鐨勫灏� */
-    @Excel(name = "姣忓皯1%鎵e綋鏈堟�绘湇鍔¤垂鐨勫灏�")
-    private BigDecimal value;
-
-    /** $column.columnComment */
-    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    @ApiModelProperty("瑙勫垯鎻忚堪")
+    @TableField("description")
     private String description;
 
-    public void setId(Long id)
-    {
-        this.id = id;
-    }
 
-    public Long getId()
-    {
-        return id;
-    }
-    public void setName(String name)
-    {
-        this.name = name;
-    }
-
-    public String getName()
-    {
-        return name;
-    }
-    public void setTemplateId(Long templateId)
-    {
-        this.templateId = templateId;
-    }
-
-    public Long getTemplateId()
-    {
-        return templateId;
-    }
-    public void setUnitId(Long unitId)
-    {
-        this.unitId = unitId;
-    }
-
-    public Long getUnitId()
-    {
-        return unitId;
-    }
-    public void setValue(BigDecimal value)
-    {
-        this.value = value;
-    }
-
-    public BigDecimal getValue()
-    {
-        return value;
-    }
-    public void setDescription(String description)
-    {
-        this.description = description;
-    }
-
-    public String getDescription()
-    {
-        return description;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
-            .append("id", getId())
-            .append("name", getName())
-            .append("templateId", getTemplateId())
-            .append("parentId", getParentId())
-            .append("unitId", getUnitId())
-            .append("value", getValue())
-            .append("description", getDescription())
-            .toString();
-    }
 }
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 733a28d..fb44a73 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
@@ -46,7 +46,7 @@
 
     @ApiModelProperty("淇敼浜�")
     @TableField("update_by")
-    private Long updateBy;
+    private String updateBy;
 
 
 }
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/form/CalculateMoneyRuleForm.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/CalculateMoneyRuleForm.java
new file mode 100644
index 0000000..cb4aa2f
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/CalculateMoneyRuleForm.java
@@ -0,0 +1,47 @@
+package com.ycl.platform.domain.form;
+
+import com.ycl.system.domain.group.Update;
+import com.ycl.system.domain.group.Add;
+import com.ycl.platform.base.AbsForm;
+import com.ycl.platform.domain.entity.CalculateMoneyRule;
+import org.springframework.beans.BeanUtils;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import org.springframework.lang.NonNull;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * 閽辨牳绠楄鍒欒〃琛ㄥ崟
+ *
+ * @author xp
+ * @since 2024-04-26
+ */
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "CalculateMoneyRule琛ㄥ崟", description = "閽辨牳绠楄鍒欒〃琛ㄥ崟")
+public class CalculateMoneyRuleForm extends AbsForm {
+
+    @NotNull(message = "鍚堝悓ID涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+    @ApiModelProperty("鍚堝悓ID")
+    private Integer contractId;
+
+    @NotBlank(message = "鍒嗘暟鏉′欢涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+    @ApiModelProperty("鍒嗘暟鏉′欢")
+    private String scoreCondition;
+
+    @NotBlank(message = "瑙勫垯鎻忚堪涓嶈兘涓虹┖", groups = {Add.class, Update.class})
+    @ApiModelProperty("瑙勫垯鎻忚堪")
+    private String description;
+
+    public static CalculateMoneyRule getEntityByForm(@NonNull CalculateMoneyRuleForm form, CalculateMoneyRule entity) {
+        if(entity == null) {
+          entity = new CalculateMoneyRule();
+        }
+        BeanUtils.copyProperties(form, entity);
+        return entity;
+    }
+
+}
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/form/CalculateReportForm.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/CalculateReportForm.java
index 6c3a2ea..c5485b2 100644
--- a/ycl-pojo/src/main/java/com/ycl/platform/domain/form/CalculateReportForm.java
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/form/CalculateReportForm.java
@@ -46,10 +46,6 @@
     @ApiModelProperty("鍝湀鐨�")
     private Integer whichMonth;
 
-    @NotNull(message = "淇敼浜轰笉鑳戒负绌�", groups = {Add.class, Update.class})
-    @ApiModelProperty("淇敼浜�")
-    private Long updateBy;
-
     public static CalculateReport getEntityByForm(@NonNull CalculateReportForm form, CalculateReport entity) {
         if(entity == null) {
           entity = new CalculateReport();
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/CalculateMoneyRuleQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/CalculateMoneyRuleQuery.java
new file mode 100644
index 0000000..ef74f40
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/CalculateMoneyRuleQuery.java
@@ -0,0 +1,23 @@
+package com.ycl.platform.domain.query;
+
+import com.ycl.platform.base.AbsQuery;
+import java.util.List;
+import org.springframework.lang.NonNull;
+import jakarta.validation.constraints.NotBlank;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * 閽辨牳绠楄鍒欒〃鏌ヨ
+ *
+ * @author xp
+ * @since 2024-04-26
+ */
+@Data
+@Accessors(chain = true)
+@ApiModel(value = "CalculateMoneyRule鏌ヨ", description = "閽辨牳绠楄鍒欒〃鏌ヨ")
+public class CalculateMoneyRuleQuery extends AbsQuery {
+}
+
diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateMoneyRuleVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateMoneyRuleVO.java
new file mode 100644
index 0000000..e8fe1e9
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateMoneyRuleVO.java
@@ -0,0 +1,41 @@
+package com.ycl.platform.domain.vo;
+
+import com.ycl.platform.base.AbsVo;
+import com.ycl.platform.domain.entity.CalculateMoneyRule;
+import java.util.List;
+import java.time.LocalDateTime;
+import org.springframework.lang.NonNull;
+import org.springframework.beans.BeanUtils;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * 閽辨牳绠楄鍒欒〃灞曠ず
+ *
+ * @author xp
+ * @since 2024-04-26
+ */
+@Data
+@Accessors(chain = true)
+public class CalculateMoneyRuleVO extends AbsVo {
+
+    /** 鍚堝悓ID */
+    private Integer contractId;
+
+    /** 鍒嗘暟鏉′欢 */
+    private String scoreCondition;
+
+    /** 瑙勫垯鎻忚堪 */
+    private String description;
+
+    public static CalculateMoneyRuleVO getVoByEntity(@NonNull CalculateMoneyRule entity, CalculateMoneyRuleVO vo) {
+        if(vo == null) {
+            vo = new CalculateMoneyRuleVO();
+        }
+        BeanUtils.copyProperties(entity, vo);
+        return vo;
+    }
+
+}
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 5817fb5..4870bf9 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
@@ -22,18 +22,9 @@
 @Data
 public class CalculateRecordVO extends AbsVo {
 
-    /** 鏍哥畻瑙勫垯 */
-    private Integer ruleId;
-    private String ruleName;
-    /** 鎵e噺鏂瑰紡 */
-    private String deductCategory;
-    /** 瑙勫垯鎻忚堪 */
-    private String ruleDesc;
-    /** 瑙勫垯鏉′欢 */
-    private String ruleCondition;
-
     /** 鍚堝悓 */
     private Integer contractId;
+
     private String contractName;
 
     /** 鎵e噺鏈嶅姟璐� */
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
new file mode 100644
index 0000000..7ba6405
--- /dev/null
+++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CalculateReportDetailVO.java
@@ -0,0 +1,59 @@
+package com.ycl.platform.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ycl.platform.base.AbsVo;
+import com.ycl.platform.domain.entity.CalculateReport;
+import lombok.Data;
+import org.springframework.beans.BeanUtils;
+import org.springframework.lang.NonNull;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 鏍哥畻鎶ュ憡灞曠ず
+ *
+ * @author xp
+ * @since 2024-04-23
+ */
+@Data
+public class CalculateReportDetailVO {
+
+    private Integer id;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createTime;
+
+    /** 鍚堝悓 */
+    private Integer contractId;
+
+    /** 杩愮淮鍗曚綅 */
+    private String unitName;
+
+    /** 鍚堝悓鍚嶇О */
+    private String contractName;
+
+    /** 鏍哥畻鏃ユ湡 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDateTime calculateTime;
+
+    /** 鎵e噺鎬婚噾棰� */
+    private BigDecimal deductMoney;
+
+    /** 鏄庣粏 */
+    private List<CalculateRecordVO> recordList;
+
+    /** 鏍哥畻瑙勫垯 */
+    private List<CalculateMoneyRuleVO> ruleList;
+
+    public static CalculateReportDetailVO getVoByEntity(@NonNull CalculateReport entity, CalculateReportDetailVO vo) {
+        if(vo == null) {
+            vo = new CalculateReportDetailVO();
+        }
+        BeanUtils.copyProperties(entity, vo);
+        return vo;
+    }
+
+}
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 8a2caef..7560cef 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
@@ -46,7 +46,7 @@
     private Integer whichMonth;
 
     /** 淇敼浜� */
-    private Long updateBy;
+    private String updateBy;
 
     /** 鏄庣粏 */
     private List<CalculateRecordVO> recordList;
diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/CalculateMoneyRuleController.java b/ycl-server/src/main/java/com/ycl/platform/controller/CalculateMoneyRuleController.java
deleted file mode 100644
index 55d06e1..0000000
--- a/ycl-server/src/main/java/com/ycl/platform/controller/CalculateMoneyRuleController.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package com.ycl.platform.controller;
-
-import annotation.Log;
-import com.ycl.platform.domain.entity.CalculateMoneyRule;
-import com.ycl.platform.service.ICalculateMoneyRuleService;
-import com.ycl.system.AjaxResult;
-import com.ycl.system.controller.BaseController;
-import com.ycl.utils.poi.ExcelUtil;
-import enumeration.BusinessType;
-import jakarta.servlet.http.HttpServletResponse;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-/**
- * 鏍哥畻瑙勫垯(閽�)Controller
- *
- * @author ruoyi
- * @date 2024-04-03
- */
-@RestController
-@RequestMapping("/calculate/money/rule")
-public class CalculateMoneyRuleController extends BaseController
-{
-    @Autowired
-    private ICalculateMoneyRuleService calculateRuleService;
-
-    /**
-     * 鏌ヨ鏍哥畻瑙勫垯鍒楄〃
-     */
-   @PreAuthorize("@ss.hasPermi('calculate:rule:list')")
-    @GetMapping("/list")
-    public AjaxResult list(CalculateMoneyRule calculateMoneyRule)
-    {
-        List<CalculateMoneyRule> list = calculateRuleService.selectCalculateRuleList(calculateMoneyRule);
-        return success(list);
-    }
-
-    /**
-     * 瀵煎嚭鏍哥畻瑙勫垯鍒楄〃
-     */
-    @PreAuthorize("@ss.hasPermi('calculate:rule:export')")
-    @Log(title = "鏍哥畻瑙勫垯", businessType = BusinessType.EXPORT)
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, CalculateMoneyRule calculateMoneyRule)
-    {
-        List<CalculateMoneyRule> list = calculateRuleService.selectCalculateRuleList(calculateMoneyRule);
-        ExcelUtil<CalculateMoneyRule> util = new ExcelUtil<CalculateMoneyRule>(CalculateMoneyRule.class);
-        util.exportExcel(response, list, "鏍哥畻瑙勫垯鏁版嵁");
-    }
-
-    /**
-     * 鑾峰彇鏍哥畻瑙勫垯璇︾粏淇℃伅
-     */
-   @PreAuthorize("@ss.hasPermi('calculate:rule:query')")
-    @GetMapping(value = "/{id}")
-    public AjaxResult getInfo(@PathVariable("id") Long id)
-    {
-        return success(calculateRuleService.selectCalculateRuleById(id));
-    }
-
-    /**
-     * 鏂板鏍哥畻瑙勫垯
-     */
-    @PreAuthorize("@ss.hasPermi('calculate:rule:add')")
-    @Log(title = "鏍哥畻瑙勫垯", businessType = BusinessType.INSERT)
-    @PostMapping
-    public AjaxResult add(@RequestBody CalculateMoneyRule calculateMoneyRule)
-    {
-        return toAjax(calculateRuleService.insertCalculateRule(calculateMoneyRule));
-    }
-
-    /**
-     * 淇敼鏍哥畻瑙勫垯
-     */
-    @PreAuthorize("@ss.hasPermi('calculate:rule:edit')")
-    @Log(title = "鏍哥畻瑙勫垯", businessType = BusinessType.UPDATE)
-    @PutMapping
-    public AjaxResult edit(@RequestBody CalculateMoneyRule calculateMoneyRule)
-    {
-        return toAjax(calculateRuleService.updateCalculateRule(calculateMoneyRule));
-    }
-
-    /**
-     * 鍒犻櫎鏍哥畻瑙勫垯
-     */
-    @PreAuthorize("@ss.hasPermi('calculate:rule:remove')")
-    @Log(title = "鏍哥畻瑙勫垯", businessType = BusinessType.DELETE)
-	@DeleteMapping("/{ids}")
-    public AjaxResult remove(@PathVariable Long[] ids)
-    {
-        return toAjax(calculateRuleService.deleteCalculateRuleByIds(ids));
-    }
-}
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 14c68e7..2473c04 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
@@ -59,7 +59,7 @@
         return calculateReportService.page(query);
     }
 
-    @GetMapping("/backfill/money")
+    @PostMapping("/backfill/money")
     @ApiOperation(value = "鍥炲~鎵f閲戦", notes = "鍥炲~鎵f閲戦")
     @PreAuthorize("@ss.hasPermi('system:calculate:report:backfill')")
     public Result backfill(@Validated @RequestBody CalculateReportBackfillForm form) {
@@ -69,7 +69,7 @@
     @GetMapping("/{id}")
     @ApiOperation(value = "璇︽儏", notes = "璇︽儏")
     @PreAuthorize("@ss.hasPermi('system:calculate:report:detail')")
-    public Result detail(@PathVariable("id") String id) {
+    public Result detail(@PathVariable("id") Long id) {
         return calculateReportService.detail(id);
     }
 
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateMoneyRuleMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateMoneyRuleMapper.java
index 71952d6..c989b85 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateMoneyRuleMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateMoneyRuleMapper.java
@@ -1,63 +1,19 @@
 package com.ycl.platform.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ycl.platform.domain.entity.CalculateMoneyRule;
-
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ycl.platform.domain.vo.CalculateMoneyRuleVO;
+import com.ycl.platform.domain.form.CalculateMoneyRuleForm;
 import java.util.List;
+import org.apache.ibatis.annotations.Mapper;
 
 /**
- * 鏍哥畻瑙勫垯Mapper鎺ュ彛
+ * 閽辨牳绠楄鍒欒〃 Mapper 鎺ュ彛
  *
- * @author ruoyi
- * @date 2024-04-03
+ * @author xp
+ * @since 2024-04-26
  */
-public interface CalculateMoneyRuleMapper extends BaseMapper<CalculateMoneyRule>
-{
-    /**
-     * 鏌ヨ鏍哥畻瑙勫垯
-     *
-     * @param id 鏍哥畻瑙勫垯涓婚敭
-     * @return 鏍哥畻瑙勫垯
-     */
-    public CalculateMoneyRule selectCalculateRuleById(Long id);
+@Mapper
+public interface CalculateMoneyRuleMapper extends BaseMapper<CalculateMoneyRule> {
 
-    /**
-     * 鏌ヨ鏍哥畻瑙勫垯鍒楄〃
-     *
-     * @param calculateMoneyRule 鏍哥畻瑙勫垯
-     * @return 鏍哥畻瑙勫垯闆嗗悎
-     */
-    public List<CalculateMoneyRule> selectCalculateRuleList(CalculateMoneyRule calculateMoneyRule);
-
-    /**
-     * 鏂板鏍哥畻瑙勫垯
-     *
-     * @param calculateMoneyRule 鏍哥畻瑙勫垯
-     * @return 缁撴灉
-     */
-    public int insertCalculateRule(CalculateMoneyRule calculateMoneyRule);
-
-    /**
-     * 淇敼鏍哥畻瑙勫垯
-     *
-     * @param calculateMoneyRule 鏍哥畻瑙勫垯
-     * @return 缁撴灉
-     */
-    public int updateCalculateRule(CalculateMoneyRule calculateMoneyRule);
-
-    /**
-     * 鍒犻櫎鏍哥畻瑙勫垯
-     *
-     * @param id 鏍哥畻瑙勫垯涓婚敭
-     * @return 缁撴灉
-     */
-    public int deleteCalculateRuleById(Long id);
-
-    /**
-     * 鎵归噺鍒犻櫎鏍哥畻瑙勫垯
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
-     * @return 缁撴灉
-     */
-    public int deleteCalculateRuleByIds(Long[] ids);
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateRecordMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateRecordMapper.java
index eaa9c91..08a00f2 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateRecordMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateRecordMapper.java
@@ -19,11 +19,4 @@
 @Mapper
 public interface CalculateRecordMapper extends BaseMapper<CalculateRecord> {
 
-    /**
-     * 鏍煎眬鍚堝悓ID鑾峰彇鏄庣粏
-     *
-     * @param contractId 鍚堝悓ID
-     * @return
-     */
-    List<CalculateRecordVO> getByContractId(@Param("contractId") Integer contractId);
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateReportMapper.java b/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateReportMapper.java
index 169f45e..b8d17a4 100644
--- a/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateReportMapper.java
+++ b/ycl-server/src/main/java/com/ycl/platform/mapper/CalculateReportMapper.java
@@ -4,6 +4,8 @@
 import com.ycl.platform.domain.entity.CalculateReport;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ycl.platform.domain.query.CalculateReportQuery;
+import com.ycl.platform.domain.vo.CalculateRecordVO;
+import com.ycl.platform.domain.vo.CalculateReportDetailVO;
 import com.ycl.platform.domain.vo.CalculateReportVO;
 import com.ycl.platform.domain.form.CalculateReportForm;
 import java.util.List;
@@ -25,5 +27,14 @@
      * @param query
      * @param page
      */
-    void page(@Param("query") CalculateReportQuery query, IPage<CalculateReportVO> page);
+    IPage page(@Param("query") CalculateReportQuery query, IPage<CalculateReportVO> page);
+
+
+    /**
+     * 鏍规嵁ID鑾峰彇鏄庣粏
+     *
+     * @param id 鏍哥畻ID
+     * @return
+     */
+    CalculateReportDetailVO getById(@Param("id") Long id);
 }
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/CalculateMoneyRuleService.java b/ycl-server/src/main/java/com/ycl/platform/service/CalculateMoneyRuleService.java
new file mode 100644
index 0000000..d67e2f2
--- /dev/null
+++ b/ycl-server/src/main/java/com/ycl/platform/service/CalculateMoneyRuleService.java
@@ -0,0 +1,65 @@
+package com.ycl.platform.service;
+
+import com.ycl.platform.domain.entity.CalculateMoneyRule;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ycl.system.Result;
+import com.ycl.platform.domain.form.CalculateMoneyRuleForm;
+import com.ycl.platform.domain.query.CalculateMoneyRuleQuery;
+import java.util.List;
+
+/**
+ * 閽辨牳绠楄鍒欒〃 鏈嶅姟绫�
+ *
+ * @author xp
+ * @since 2024-04-26
+ */
+public interface CalculateMoneyRuleService extends IService<CalculateMoneyRule> {
+
+    /**
+     * 娣诲姞
+     * @param form
+     * @return
+     */
+    Result add(CalculateMoneyRuleForm form);
+
+    /**
+     * 淇敼
+     * @param form
+     * @return
+     */
+    Result update(CalculateMoneyRuleForm form);
+
+    /**
+     * 鎵归噺鍒犻櫎
+     * @param ids
+     * @return
+     */
+    Result remove(List<String> ids);
+
+    /**
+     * id鍒犻櫎
+     * @param id
+     * @return
+     */
+    Result removeById(String id);
+
+    /**
+     * 鍒嗛〉鏌ヨ
+     * @param query
+     * @return
+     */
+    Result page(CalculateMoneyRuleQuery query);
+
+    /**
+     * 鏍规嵁id鏌ユ壘
+     * @param id
+     * @return
+     */
+    Result detail(String id);
+
+    /**
+     * 鍒楄〃
+     * @return
+     */
+    Result all();
+}
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 1b79a79..9a8933f 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
@@ -35,14 +35,14 @@
      * @param ids
      * @return
      */
-    Result remove(List<String> ids);
+    Result remove(List<Long> ids);
 
     /**
      * id鍒犻櫎
      * @param id
      * @return
      */
-    Result removeById(String id);
+    Result removeById(Long id);
 
     /**
      * 鍒嗛〉鏌ヨ
@@ -56,7 +56,7 @@
      * @param id
      * @return
      */
-    Result detail(String id);
+    Result detail(Long id);
 
     /**
      * 鍒楄〃
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/ICalculateMoneyRuleService.java b/ycl-server/src/main/java/com/ycl/platform/service/ICalculateMoneyRuleService.java
deleted file mode 100644
index 60b0ba6..0000000
--- a/ycl-server/src/main/java/com/ycl/platform/service/ICalculateMoneyRuleService.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package com.ycl.platform.service;
-
-import com.ycl.platform.domain.entity.CalculateMoneyRule;
-
-import java.util.List;
-
-/**
- * 鏍哥畻瑙勫垯Service鎺ュ彛
- *
- * @author ruoyi
- * @date 2024-04-03
- */
-public interface ICalculateMoneyRuleService
-{
-    /**
-     * 鏌ヨ鏍哥畻瑙勫垯
-     *
-     * @param id 鏍哥畻瑙勫垯涓婚敭
-     * @return 鏍哥畻瑙勫垯
-     */
-    public CalculateMoneyRule selectCalculateRuleById(Long id);
-
-    /**
-     * 鏌ヨ鏍哥畻瑙勫垯鍒楄〃
-     *
-     * @param calculateMoneyRule 鏍哥畻瑙勫垯
-     * @return 鏍哥畻瑙勫垯闆嗗悎
-     */
-    public List<CalculateMoneyRule> selectCalculateRuleList(CalculateMoneyRule calculateMoneyRule);
-
-    /**
-     * 鏂板鏍哥畻瑙勫垯
-     *
-     * @param calculateMoneyRule 鏍哥畻瑙勫垯
-     * @return 缁撴灉
-     */
-    public int insertCalculateRule(CalculateMoneyRule calculateMoneyRule);
-
-    /**
-     * 淇敼鏍哥畻瑙勫垯
-     *
-     * @param calculateMoneyRule 鏍哥畻瑙勫垯
-     * @return 缁撴灉
-     */
-    public int updateCalculateRule(CalculateMoneyRule calculateMoneyRule);
-
-    /**
-     * 鎵归噺鍒犻櫎鏍哥畻瑙勫垯
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏍哥畻瑙勫垯涓婚敭闆嗗悎
-     * @return 缁撴灉
-     */
-    public int deleteCalculateRuleByIds(Long[] ids);
-
-    /**
-     * 鍒犻櫎鏍哥畻瑙勫垯淇℃伅
-     *
-     * @param id 鏍哥畻瑙勫垯涓婚敭
-     * @return 缁撴灉
-     */
-    public int deleteCalculateRuleById(Long id);
-}
diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateMoneyRuleServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateMoneyRuleServiceImpl.java
index 62567e2..df1a3a5 100644
--- a/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateMoneyRuleServiceImpl.java
+++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateMoneyRuleServiceImpl.java
@@ -1,95 +1,145 @@
 package com.ycl.platform.service.impl;
 
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ycl.platform.domain.entity.CalculateMoneyRule;
 import com.ycl.platform.mapper.CalculateMoneyRuleMapper;
-import com.ycl.platform.service.ICalculateMoneyRuleService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
+import com.ycl.platform.service.CalculateMoneyRuleService;
+import com.ycl.system.Result;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ycl.platform.domain.form.CalculateMoneyRuleForm;
+import com.ycl.platform.domain.vo.CalculateMoneyRuleVO;
+import com.ycl.platform.domain.query.CalculateMoneyRuleQuery;
 import java.util.List;
+import org.apache.commons.lang3.StringUtils;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ycl.system.page.PageUtil;
+import org.springframework.stereotype.Service;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.beans.BeanUtils;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.Assert;
+import java.util.ArrayList;
+import java.util.stream.Collectors;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import lombok.RequiredArgsConstructor;
 
 /**
- * 鏍哥畻瑙勫垯Service涓氬姟灞傚鐞�
+ * 閽辨牳绠楄鍒欒〃 鏈嶅姟瀹炵幇绫�
  *
- * @author ruoyi
- * @date 2024-04-03
+ * @author xp
+ * @since 2024-04-26
  */
 @Service
-public class CalculateMoneyRuleServiceImpl extends ServiceImpl<CalculateMoneyRuleMapper, CalculateMoneyRule> implements ICalculateMoneyRuleService
-{
-    @Autowired
-    private CalculateMoneyRuleMapper calculateMoneyRuleMapper;
+@RequiredArgsConstructor
+public class CalculateMoneyRuleServiceImpl extends ServiceImpl<CalculateMoneyRuleMapper, CalculateMoneyRule> implements CalculateMoneyRuleService {
+
+    private final CalculateMoneyRuleMapper calculateMoneyRuleMapper;
 
     /**
-     * 鏌ヨ鏍哥畻瑙勫垯
-     *
-     * @param id 鏍哥畻瑙勫垯涓婚敭
-     * @return 鏍哥畻瑙勫垯
+     * 娣诲姞
+     * @param form
+     * @return
      */
     @Override
-    public CalculateMoneyRule selectCalculateRuleById(Long id)
-    {
-        return calculateMoneyRuleMapper.selectCalculateRuleById(id);
+    public Result add(CalculateMoneyRuleForm form) {
+        CalculateMoneyRule entity = CalculateMoneyRuleForm.getEntityByForm(form, null);
+        if(baseMapper.insert(entity) > 0) {
+            return Result.ok("娣诲姞鎴愬姛");
+        }
+        return Result.error("娣诲姞澶辫触");
     }
 
     /**
-     * 鏌ヨ鏍哥畻瑙勫垯鍒楄〃
-     *
-     * @param calculateMoneyRule 鏍哥畻瑙勫垯
-     * @return 鏍哥畻瑙勫垯
+     * 淇敼
+     * @param form
+     * @return
      */
     @Override
-    public List<CalculateMoneyRule> selectCalculateRuleList(CalculateMoneyRule calculateMoneyRule)
-    {
-        return calculateMoneyRuleMapper.selectCalculateRuleList(calculateMoneyRule);
+    public Result update(CalculateMoneyRuleForm form) {
+
+        CalculateMoneyRule entity = baseMapper.selectById(form.getId());
+
+        // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊
+        Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
+        BeanUtils.copyProperties(form, entity);
+        if (baseMapper.updateById(entity) > 0) {
+            return Result.ok("淇敼鎴愬姛");
+        }
+        return Result.error("淇敼澶辫触");
     }
 
     /**
-     * 鏂板鏍哥畻瑙勫垯
-     *
-     * @param calculateMoneyRule 鏍哥畻瑙勫垯
-     * @return 缁撴灉
+     * 鎵归噺鍒犻櫎
+     * @param ids
+     * @return
      */
     @Override
-    public int insertCalculateRule(CalculateMoneyRule calculateMoneyRule)
-    {
-        return calculateMoneyRuleMapper.insertCalculateRule(calculateMoneyRule);
+    public Result remove(List<String> ids) {
+        if(baseMapper.deleteBatchIds(ids) > 0) {
+            return Result.ok("鍒犻櫎鎴愬姛");
+        }
+        return Result.error("鍒犻櫎澶辫触");
     }
 
     /**
-     * 淇敼鏍哥畻瑙勫垯
-     *
-     * @param calculateMoneyRule 鏍哥畻瑙勫垯
-     * @return 缁撴灉
+     * id鍒犻櫎
+     * @param id
+     * @return
      */
     @Override
-    public int updateCalculateRule(CalculateMoneyRule calculateMoneyRule)
-    {
-        return calculateMoneyRuleMapper.updateCalculateRule(calculateMoneyRule);
+    public Result removeById(String id) {
+        if(baseMapper.deleteById(id) > 0) {
+            return Result.ok("鍒犻櫎鎴愬姛");
+        }
+        return Result.error("鍒犻櫎澶辫触");
     }
 
     /**
-     * 鎵归噺鍒犻櫎鏍哥畻瑙勫垯
-     *
-     * @param ids 闇�瑕佸垹闄ょ殑鏍哥畻瑙勫垯涓婚敭
-     * @return 缁撴灉
+     * 鍒嗛〉鏌ヨ
+     * @param query
+     * @return
      */
     @Override
-    public int deleteCalculateRuleByIds(Long[] ids)
-    {
-        return calculateMoneyRuleMapper.deleteCalculateRuleByIds(ids);
+    public Result page(CalculateMoneyRuleQuery query) {
+
+        IPage<CalculateMoneyRule> page = new LambdaQueryChainWrapper<>(baseMapper)
+                .orderByDesc(CalculateMoneyRule::getCreateTime)
+                .page(PageUtil.getPage(query, CalculateMoneyRule.class));
+
+        List<CalculateMoneyRuleVO> vos = page.getRecords().stream()
+                .map(
+                        entity -> CalculateMoneyRuleVO.getVoByEntity(entity, null)
+                )
+                .collect(Collectors.toList());
+        return Result.ok().data(vos).total(page.getTotal());
     }
 
     /**
-     * 鍒犻櫎鏍哥畻瑙勫垯淇℃伅
-     *
-     * @param id 鏍哥畻瑙勫垯涓婚敭
-     * @return 缁撴灉
+     * 鏍规嵁id鏌ユ壘
+     * @param id
+     * @return
      */
     @Override
-    public int deleteCalculateRuleById(Long id)
-    {
-        return calculateMoneyRuleMapper.deleteCalculateRuleById(id);
+    public Result detail(String id) {
+
+        CalculateMoneyRule entity = baseMapper.selectById(id);
+        Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
+        CalculateMoneyRuleVO vo = CalculateMoneyRuleVO.getVoByEntity(entity, null);
+        return Result.ok().data(vo);
+    }
+
+    /**
+     * 鍒楄〃
+     * @return
+     */
+    @Override
+    public Result all() {
+        List<CalculateMoneyRule> entities = baseMapper.selectList(null);
+        List<CalculateMoneyRuleVO> vos = entities.stream()
+                .map(
+                        entity -> CalculateMoneyRuleVO.getVoByEntity(entity, null)
+                )
+                .collect(Collectors.toList());
+        return Result.ok().data(vos);
     }
 }
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 99edde0..ee26421 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
@@ -5,6 +5,7 @@
 import com.ycl.platform.domain.entity.CalculateReport;
 import com.ycl.platform.domain.form.CalculateReportBackfillForm;
 import com.ycl.platform.domain.vo.CalculateRecordVO;
+import com.ycl.platform.domain.vo.CalculateReportDetailVO;
 import com.ycl.platform.mapper.CalculateRecordMapper;
 import com.ycl.platform.mapper.CalculateReportMapper;
 import com.ycl.platform.service.CalculateReportService;
@@ -16,6 +17,8 @@
 
 import java.math.BigDecimal;
 import java.util.List;
+
+import com.ycl.utils.SecurityUtils;
 import org.apache.commons.lang3.StringUtils;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ycl.system.page.PageUtil;
@@ -83,7 +86,7 @@
      * @return
      */
     @Override
-    public Result remove(List<String> ids) {
+    public Result remove(List<Long> ids) {
         if(baseMapper.deleteBatchIds(ids) > 0) {
             return Result.ok("鍒犻櫎鎴愬姛");
         }
@@ -96,7 +99,7 @@
      * @return
      */
     @Override
-    public Result removeById(String id) {
+    public Result removeById(Long id) {
         if(baseMapper.deleteById(id) > 0) {
             return Result.ok("鍒犻櫎鎴愬姛");
         }
@@ -121,14 +124,10 @@
      * @return
      */
     @Override
-    public Result detail(String id) {
-        CalculateReport entity = baseMapper.selectById(id);
-        Assert.notNull(entity, "璁板綍涓嶅瓨鍦�");
-        CalculateReportVO vo = CalculateReportVO.getVoByEntity(entity, null);
+    public Result detail(Long id) {
         // 鏄庣粏鍒楄〃
-        List<CalculateRecordVO> recordList = calculateRecordMapper.getByContractId(entity.getContractId());
-        vo.setRecordList(recordList);
-        return Result.ok().data(vo);
+        CalculateReportDetailVO detail = baseMapper.getById(id);
+        return Result.ok().data(detail);
     }
 
     /**
diff --git a/ycl-server/src/main/resources/mapper/zgyw/CalculateRecordMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/CalculateRecordMapper.xml
index 36c6cf7..b8944a7 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/CalculateRecordMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/CalculateRecordMapper.xml
@@ -3,34 +3,17 @@
 <mapper namespace="com.ycl.platform.mapper.CalculateRecordMapper">
 
     <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
-    <resultMap id="BaseResultMap" type="com.ycl.platform.domain.vo.CalculateRecordVO">
+    <resultMap id="BaseResultMap" type="com.ycl.platform.domain.vo.CalculateReportDetailVO">
         <result column="id" property="id" />
         <result column="create_time" property="createTime" />
-        <result column="rule_id" property="ruleId" />
-        <result column="rule_name" property="ruleName" />
-        <result column="deduct_category" property="deductCategory" />
-        <result column="rule_condition" property="ruleCondition" />
-        <result column="rule_desc" property="ruleDesc" />
+        <result column="deduct_category" property="unitName" />
+        <result column="score_condition" property="contractName" />
+        <result column="description" property="calculateTime" />
         <result column="deduct_money" property="deductMoney" />
-        <result column="score" property="score" />
+        <result column="score" property="deductMoney" />
+        <collection property="recordList" column="contract_id" select="selectByContractId" ofType="com.ycl.platform.domain.vo.CalculateMoneyRuleVO"/>
     </resultMap>
 
-    <select id="getByContractId" resultMap="BaseResultMap">
-        SELECT
-               tcr.id,
-               tcr.create_time,
-               tcr.deduct_money,
-               tcr.score,
-               tcr.rule_id,
-               tcru.rule_name,
-               tcru.deduct_category,
-               tcru.rule_desc,
-               tcru.rule_condition
-        FROM
-             t_calculate_record tcr
-                 INNER JOIN t_calculate_rule tcru ON tcr.rule_id = tcru.id AND tcr.contract_id = #{contractId}
-        WHERE
-            tcru.deleted = 0 AND tcr.deleted = 0
-    </select>
+
 
 </mapper>
diff --git a/ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml
index 3af6b52..1bf3060 100644
--- a/ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml
+++ b/ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml
@@ -4,37 +4,89 @@
 
     <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
     <resultMap id="BaseResultMap" type="com.ycl.platform.domain.vo.CalculateReportVO">
-        <result column="id" property="id" />
-        <result column="create_time" property="createTime" />
-        <result column="unit_name" property="unitName" />
-        <result column="name" property="contractName" />
-        <result column="contract_id" property="contractId" />
-        <result column="calculate_time" property="calculateTime" />
-        <result column="deduct_money" property="deductMoney" />
-        <result column="which_year" property="whichYear" />
-        <result column="which_month" property="whichMonth" />
-        <result column="update_by" property="updateBy" />
+        <result column="id" property="id"/>
+        <result column="create_time" property="createTime"/>
+        <result column="unit_name" property="unitName"/>
+        <result column="name" property="contractName"/>
+        <result column="contract_id" property="contractId"/>
+        <result column="calculate_time" property="calculateTime"/>
+        <result column="deduct_money" property="deductMoney"/>
+        <result column="which_year" property="whichYear"/>
+        <result column="which_month" property="whichMonth"/>
+        <result column="update_by" property="updateBy"/>
     </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
+        tyu.unit_name,
+        tc.name,
+        tcr.id,
+        tcr.deduct_money,
+        tcr.create_time,
+        tcr.update_time,
+        tcr.calculate_time,
+        tcr.which_year,
+        tcr.which_month
         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
+        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
         <where>
-                AND tcr.deleted = 0 AND tc.deleted = 0 AND tyu.deleted = 0
+            AND tcr.deleted = 0 AND tc.deleted = 0 AND tyu.deleted = 0
             <if test="query.unitName != null and query.unitName != '' ">
                 AND tyu.unit_name like concat('%', #{query.unitName}, '%')
             </if>
         </where>
     </select>
 
+    <resultMap id="DetailResultMap" type="com.ycl.platform.domain.vo.CalculateReportDetailVO">
+        <result column="id" property="id"/>
+        <result column="create_time" property="createTime"/>
+        <result column="unit_name" property="unitName"/>
+        <result column="name" property="contractName"/>
+        <result column="contract_id" property="contractId"/>
+        <result column="calculate_time" property="calculateTime"/>
+        <result column="deduct_money" property="deductMoney"/>
+        <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"
+                    select="selectRecordByContractId"/>
+    </resultMap>
+
+    <select id="selectRuleByContractId" resultType="com.ycl.platform.domain.vo.CalculateMoneyRuleVO">
+        SELECT id,
+               description,
+               score_condition as scoreCondition
+        FROM t_calculate_money_rule
+        WHERE contract_id = #{contractId}
+          AND deleted = 0
+    </select>
+
+    <select id="selectRecordByContractId" resultType="com.ycl.platform.domain.vo.CalculateRecordVO">
+        SELECT
+               id,
+               create_time  as createTime,
+               score,
+               deduct_money as deductMoney
+        FROM
+             t_calculate_record
+        WHERE
+              contract_id = #{contractId} AND deleted = 0
+    </select>
+
+    <select id="getById" resultMap="DetailResultMap">
+        SELECT tyu.unit_name,
+               tc.name,
+               tcr.id,
+               tcr.contract_id,
+               tcr.deduct_money,
+               tcr.create_time,
+               tcr.update_time,
+               tcr.calculate_time
+        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
+        WHERE tcr.id = #{id}
+    </select>
+
 </mapper>

--
Gitblit v1.8.0