From f04e52845f3897d92fd286c6d1efa62f8e8f25a4 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期一, 25 十一月 2024 14:11:31 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 server/system_service/src/main/java/com/doumee/core/utils/Constants.java                                       |   14 +
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractRoom.java                  |   13 +
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractRevenue.java               |  100 ++++++++
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwContractRevenueCloudController.java         |   91 +++++++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwContractRevenueService.java          |   97 ++++++++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java    |  147 +++++++++++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractBill.java                  |   80 +++---
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwContractRevenueMapper.java               |   14 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractRevenueServiceImpl.java |  149 ++++++++++++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwRoom.java                          |    1 
 10 files changed, 661 insertions(+), 45 deletions(-)

diff --git a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
index 7ab9436..0e40100 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -51,6 +51,7 @@
     public static final String SPECIAL_COMPANY_ID ="SPECIAL_COMPANY_ID" ;
     public static final String YW_DEVICE ="YW_DEVICE" ;
     public static final String YW_PATROL ="YW_PATROL" ;
+    public static final String YW_CONTRACT_BILL ="YW_CONTRACT_BILL" ;
 
     public static final String RESERVATION_TOTAL_NUM ="RESERVATION_TOTAL_NUM" ;
     public static final String SIGN_IN_PLACE_LAT ="SIGN_IN_PLACE_LAT" ;
@@ -213,6 +214,19 @@
         public static final  int self = -1;
     }
 
+
+    /**
+     * 璐﹀崟绫诲瀷 0绉熻祦鏉℃ 1鐗╀笟鏉℃ 2绉熻祦鎶奸噾 3鐗╀笟鎶奸噾 4鑷缓璐﹀崟
+     */
+    public interface contractBillType{
+        int lease = 0;
+        int property= 1;
+        int leaseDeposit = 2;
+        int propertyDeposit =3;
+        int create =4;
+    }
+
+
     /**
      * 浣滀笟绫诲瀷 0鑷湁杞﹀嵏璐� 1鑷湁杞﹁璐� 2澶栧崗杞﹀嵏璐� 3澶栧崗杞﹁璐� 4甯傚叕鍙稿鍗忚溅鍗歌揣
      */
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwContractRevenueCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwContractRevenueCloudController.java
new file mode 100644
index 0000000..19563c3
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwContractRevenueCloudController.java
@@ -0,0 +1,91 @@
+package com.doumee.cloud.admin;
+
+import com.doumee.api.BaseController;
+import com.doumee.config.annotation.CloudRequiredPermission;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.core.utils.Constants;
+import com.doumee.dao.business.model.YwContractRevenue;
+import com.doumee.service.business.YwContractRevenueService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2024/11/25 10:29
+ */
+@Api(tags = "杩愮淮鍚堝悓鏀舵敮娴佹按")
+@RestController
+@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/business/ywContractRevenue")
+public class YwContractRevenueCloudController extends BaseController {
+
+    @Autowired
+    private YwContractRevenueService ywContractRevenueService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @CloudRequiredPermission("business:ywcontractrevenue:create")
+    public ApiResponse create(@RequestBody YwContractRevenue ywContractRevenue) {
+        return ApiResponse.success(ywContractRevenueService.create(ywContractRevenue));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @CloudRequiredPermission("business:ywcontractrevenue:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        ywContractRevenueService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @CloudRequiredPermission("business:ywcontractrevenue:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        ywContractRevenueService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @CloudRequiredPermission("business:ywcontractrevenue:update")
+    public ApiResponse updateById(@RequestBody YwContractRevenue ywContractRevenue) {
+        ywContractRevenueService.updateById(ywContractRevenue);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @CloudRequiredPermission("business:ywcontractrevenue:query")
+    public ApiResponse<PageData<YwContractRevenue>> findPage (@RequestBody PageWrap<YwContractRevenue> pageWrap) {
+        return ApiResponse.success(ywContractRevenueService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @CloudRequiredPermission("business:ywcontractrevenue:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<YwContractRevenue> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(YwContractRevenue.class).export(ywContractRevenueService.findPage(pageWrap).getRecords(), "杩愮淮鍚堝悓鏀舵敮娴佹按", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @CloudRequiredPermission("business:ywcontractrevenue:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(ywContractRevenueService.findById(id));
+    }
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwContractRevenueMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwContractRevenueMapper.java
new file mode 100644
index 0000000..39704de
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwContractRevenueMapper.java
@@ -0,0 +1,14 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.YwContractRevenue;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.github.yulichang.base.mapper.MPJJoinMapper;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2024/11/25 10:29
+ */
+public interface YwContractRevenueMapper extends MPJBaseMapper<YwContractRevenue> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractBill.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractBill.java
index a1eeb1c..0981011 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractBill.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractBill.java
@@ -28,104 +28,84 @@
 
     @TableId(type = IdType.AUTO)
     @ApiModelProperty(value = "涓婚敭", example = "1")
-    @ExcelColumn(name="涓婚敭")
     private Integer id;
 
     @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
-    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
     private Integer creator;
 
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
-    @ExcelColumn(name="鍒涘缓鏃堕棿")
     private Date createDate;
 
     @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
-    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
     private Integer editor;
 
     @ApiModelProperty(value = "鏇存柊鏃堕棿")
-    @ExcelColumn(name="鏇存柊鏃堕棿")
     private Date editDate;
 
     @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
-    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
     private Integer isdeleted;
 
     @ApiModelProperty(value = "澶囨敞")
-    @ExcelColumn(name="澶囨敞")
     private String remark;
     @ApiModelProperty(value = "璐﹀崟鍚嶇О")
-    @ExcelColumn(name="璐﹀崟鍚嶇О")
     private String title;
-    @ApiModelProperty(value = "绫诲瀷 0绉熻祦鏉℃ 1鐗╀笟鏉℃ 2绉熻祦鎶奸噾 3鐗╀笟鎶奸噾", example = "1")
-    @ExcelColumn(name="绫诲瀷 0绉熻祦鏉℃ 1鐗╀笟鏉℃ 2绉熻祦鎶奸噾 3鐗╀笟鎶奸噾")
+    @ApiModelProperty(value = "璐﹀崟缂栧彿")
+    private String code;
+    @ApiModelProperty(value = "绫诲瀷 0绉熻祦鏉℃ 1鐗╀笟鏉℃ 2绉熻祦鎶奸噾 3鐗╀笟鎶奸噾 4鑷缓璐﹀崟", example = "1")
+    @ExcelColumn(name="璐﹀崟鏉ユ簮",index = 12,width = 6,valueMapping = "0=鍚堝悓璐﹀崟;1=鍚堝悓璐﹀崟;2=鍚堝悓璐﹀崟;3=鍚堝悓璐﹀崟;4=鑷缓璐﹀崟;")
     private Integer type;
+
     @ApiModelProperty(value = "鐘舵�� 0寮�濮嬶紱1鍏抽棴锛�", example = "1")
-    @ExcelColumn(name="鐘舵�� 0寮�濮嬶紱1鍏抽棴锛�")
     private Integer status;
 
     @ApiModelProperty(value = "寮�濮嬫椂闂�")
-    @ExcelColumn(name="寮�濮嬫椂闂�")
+    @ExcelColumn(name="璁¤垂寮�濮嬫棩鏈�",index = 10,width = 6,dateFormat = "yyyy-MM-dd")
     private Date startDate;
-
-    @ApiModelProperty(value = "瀹為檯浠樻鏃�")
-    @ExcelColumn(name="瀹為檯浠樻鏃�")
-    private Date actPayDate;
-    @ApiModelProperty(value = "璁″垝浠樻鏃�")
-    @ExcelColumn(name="璁″垝浠樻鏃�")
-    private Date planPayDate;
     @ApiModelProperty(value = "缁撴潫鏃堕棿")
-    @ExcelColumn(name="缁撴潫鏃堕棿")
+    @ExcelColumn(name="璁¤垂缁撴潫鏃ユ湡",index = 11,width = 6,dateFormat = "yyyy-MM-dd")
     private Date endDate;
 
+    @ApiModelProperty(value = "瀹為檯浠樻鏃�")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date actPayDate;
 
     @ApiModelProperty(value = "璁″垝浠樻鏃�")
-    @ExcelColumn(name="璁″垝浠樻鏃�")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date planPayData;
-
-    @ApiModelProperty(value = "瀹為檯浠樻鏃�")
-    @ExcelColumn(name="瀹為檯浠樻鏃�")
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date actPayData;
+    private Date planPayDate;
 
     @ApiModelProperty(value = "鍚堝悓鏉℃缂栫爜锛堝叧鑱攜w_contract_detail)", example = "1")
-    @ExcelColumn(name="鍚堝悓鏉℃缂栫爜锛堝叧鑱攜w_contract_detail)")
     private Integer detailId;
 
     @ApiModelProperty(value = "鍚堝悓缂栫爜锛堝叧鑱攜w_contract)", example = "1")
-    @ExcelColumn(name="鍚堝悓缂栫爜锛堝叧鑱攜w_contract)")
     private Integer contractId;
 
     @ApiModelProperty(value = "鎺掑簭鐮�", example = "1")
-    @ExcelColumn(name="鎺掑簭鐮�")
     private Integer sortnum;
 
-    @ApiModelProperty(value = "鎬婚噾棰�", example = "1")
-    @ExcelColumn(name="鎬婚噾棰�")
+    @ApiModelProperty(value = "璐﹀崟閲戦", example = "1")
+    @ExcelColumn(name="璐﹀崟閲戦",index = 4,width = 6)
     private BigDecimal totleFee;
 
     @ApiModelProperty(value = "搴旀敹閲戦", example = "1")
-    @ExcelColumn(name="搴旀敹閲戦")
+    @ExcelColumn(name="搴旀敹閲戦",index = 5,width = 6)
     private BigDecimal receivableFee;
 
     @ApiModelProperty(value = "璐圭敤绫诲瀷锛�0=绉熻祦璐癸紱1=鐗╀笟璐癸紱2=鎶奸噾锛�3=淇濊瘉閲戯紱4=姘寸數璐癸紱5=鏉傞」璐癸紱6=鍏朵粬", example = "1")
-    @ExcelColumn(name="璐圭敤绫诲瀷锛�0=绉熻祦璐癸紱1=鐗╀笟璐癸紱2=鎶奸噾锛�3=淇濊瘉閲戯紱4=姘寸數璐癸紱5=鏉傞」璐癸紱6=鍏朵粬")
+    @ExcelColumn(name="璐圭敤绫诲瀷",index = 8,width = 6,valueMapping = "0=绉熻祦璐�;1=鐗╀笟璐�;2=鎶奸噾;3=淇濊瘉閲�;4=姘寸數璐�;5=鏉傞」璐�;6=鍏朵粬;")
     private Integer costType;
 
     @ApiModelProperty(value = "璐﹀崟绫诲瀷锛�0=鏀舵锛�1=浠樻", example = "1")
-    @ExcelColumn(name="璐﹀崟绫诲瀷锛�0=鏀舵锛�1=浠樻")
     private Integer billType;
 
     @ApiModelProperty(value = "鎵�灞炲叕鍙�", example = "1")
-    @ExcelColumn(name="鎵�灞炲叕鍙�")
     private Integer companyId;
 
     @ApiModelProperty(value = "浠樻鐘舵�侊細0=寰呮敹娆撅紱1=宸茬粨娓咃紱2=閮ㄥ垎缁撴竻锛�3=寰呬粯娆撅紱4=寰呴��娆撅紱5=宸插叧闂�")
-    @ExcelColumn(name="浠樻鐘舵�侊細0=寰呮敹娆撅紱1=宸茬粨娓咃紱2=閮ㄥ垎缁撴竻锛�3=寰呬粯娆撅紱4=寰呴��娆撅紱5=宸插叧闂�")
+    @ExcelColumn(name="缁撴竻鐘舵��",index = 3,width = 6,valueMapping = "0=寰呮敹娆�;1=宸茬粨娓�;2=閮ㄥ垎缁撴竻;3=寰呬粯娆�;4=寰呴��娆�;5=宸插叧闂�;")
     private Integer payStatus;
 
     @ApiModelProperty(value = "瀹㈡埛鍚嶇О锛堜粯娆炬柟锛�", example = "1")
+    @ExcelColumn(name="瀹㈡埛鍚嶇О",index = 0,width = 10)
     @TableField(exist = false)
     private String customerName;
 
@@ -134,8 +114,14 @@
     private String companyName;
 
     @ApiModelProperty(value = "鍚堝悓缂栧彿", example = "1")
+    @ExcelColumn(name="鍚堝悓缂栧彿",index = 2,width = 10)
     @TableField(exist = false)
     private String contractCode;
+
+    @ApiModelProperty(value = "妤煎畤鎴块棿", example = "1")
+    @ExcelColumn(name="妤煎畤鎴块棿",index = 1,width = 10)
+    @TableField(exist = false)
+    private String roomPathName;
 
     @ApiModelProperty(value = "鎴块棿鏁版嵁", example = "1")
     @TableField(exist = false)
@@ -153,14 +139,30 @@
     @JsonFormat(pattern = "yyyy-MM-dd")
     private Date planPayDateEnd;
 
+    @ApiModelProperty(value = "瀹炴敹閲戦")
+    @TableField(exist = false)
+    @ExcelColumn(name="瀹炴敹閲戦",index = 6,width = 6)
+    private BigDecimal actReceivableFee;
+
+    @ApiModelProperty(value = "闇�鏀堕噾棰�")
+    @TableField(exist = false)
+    @ExcelColumn(name="闇�鏀堕噾棰�",index = 7,width = 6)
+    private BigDecimal needReceivableFee;
+
+    @ApiModelProperty(value = "鏄惁閫炬湡锛�0=鍚︼紱1=鏄�")
+    @TableField(exist = false)
+    @ExcelColumn(name="鏄惁閫炬湡",index = 9,width = 6,valueMapping = "0=鏈�炬湡锛�1=宸查�炬湡")
+    private BigDecimal isOverdue;
 
     @ApiModelProperty(value = "闄勪欢淇℃伅", example = "1")
     @TableField(exist = false)
     private List<Multifile> multifileList;
 
-
-    @ApiModelProperty(value = "闄勪欢淇℃伅", example = "1")
+    @ApiModelProperty(value = "鍏宠仈鎴块棿鏁版嵁", example = "1")
     @TableField(exist = false)
     private List<YwContractRoom> ywContractRoomList;
 
+    @ApiModelProperty(value = "鏀舵敮娴佹按", example = "1")
+    @TableField(exist = false)
+    private List<YwContractRevenue> ywContractRevenueList;
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractRevenue.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractRevenue.java
new file mode 100644
index 0000000..0e01ed8
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractRevenue.java
@@ -0,0 +1,100 @@
+package com.doumee.dao.business.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+import java.math.BigDecimal;
+
+/**
+ * 杩愮淮鍚堝悓鏀舵敮娴佹按
+ * @author 姹熻箘韫�
+ * @date 2024/11/25 10:29
+ */
+@Data
+@ApiModel("杩愮淮鍚堝悓鏀舵敮娴佹按")
+@TableName("`yw_contract_revenue`")
+public class YwContractRevenue {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private Integer creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private Integer editor;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "鐘舵�� 0=寮�鍚紱1=鍏抽棴", example = "1")
+    @ExcelColumn(name="鐘舵�� 0=寮�鍚紱1=鍏抽棴")
+    private Integer status;
+
+    @ApiModelProperty(value = "瀹炴敹閲戦", example = "1")
+    @ExcelColumn(name="瀹炴敹閲戦")
+    private BigDecimal actReceivableFee;
+
+    @ApiModelProperty(value = "瀹為檯浠樻鏃�")
+    @ExcelColumn(name="瀹為檯浠樻鏃�")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date actPayDate;
+
+    @ApiModelProperty(value = "浠樻绫诲瀷锛�0=鐜伴噾锛�1=缃戦摱杞处锛�2=POS鏈猴紱3=鏀粯瀹濓紱4=寰俊锛�5=杞处鏀エ锛�6=鍏朵粬", example = "1")
+    @ExcelColumn(name="浠樻绫诲瀷锛�0=鐜伴噾锛�1=缃戦摱杞处锛�2=POS鏈猴紱3=鏀粯瀹濓紱4=寰俊锛�5=杞处鏀エ锛�6=鍏朵粬")
+    private Integer payType;
+
+    @ApiModelProperty(value = "鎵�灞炲叕鍙革紙鍏宠仈 company锛�", example = "1")
+    @ExcelColumn(name="鎵�灞炲叕鍙革紙鍏宠仈 company锛�")
+    private Integer companyId;
+
+    @ApiModelProperty(value = "鏀舵敮璐︽埛锛堝叧鑱攜w_account)", example = "1")
+    @ExcelColumn(name="鏀舵敮璐︽埛锛堝叧鑱攜w_account)")
+    private Integer accountId;
+
+    @ApiModelProperty(value = "鍚堝悓涓婚敭锛堝叧鑱攜w_contract锛�", example = "1")
+    @ExcelColumn(name="鍚堝悓涓婚敭锛堝叧鑱攜w_contract锛�")
+    private Integer contractId;
+
+    @ApiModelProperty(value = "璐﹀崟涓婚敭锛堝叧鑱攜w_contract_bill锛�", example = "1")
+    @ExcelColumn(name="璐﹀崟涓婚敭锛堝叧鑱攜w_contract_bill锛�")
+    private Integer billId;
+
+    @ApiModelProperty(value = "鏀舵敮绫诲瀷锛�0=鏀跺叆锛�1=鏀嚭", example = "1")
+    @ExcelColumn(name="鏀舵敮绫诲瀷锛�0=鏀跺叆锛�1=鏀嚭")
+    private Integer revenueType;
+
+
+    @ApiModelProperty(value = "瀹㈡埛鍚嶇О")
+    @TableField(exist = false)
+    private String customerNme;
+
+
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractRoom.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractRoom.java
index 43ac515..b4bf766 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractRoom.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractRoom.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.business.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.doumee.core.annotation.excel.ExcelColumn;
 import com.doumee.core.model.LoginUserModel;
 import io.swagger.annotations.ApiModel;
@@ -68,4 +69,16 @@
     @ExcelColumn(name="鎺掑簭鐮�")
     private Integer sortnum;
 
+    @ApiModelProperty(value = "椤圭洰鍚嶇О")
+    @TableField(exist = false)
+    private String projectName;
+    @ApiModelProperty(value = "妤煎畤鍚嶇О")
+    @TableField(exist = false)
+    private String buildingName;
+    @ApiModelProperty(value = "妤煎眰鍚嶇О")
+    @TableField(exist = false)
+    private String floorName;
+    @ApiModelProperty(value = "鎴块棿鍚嶇О")
+    @TableField(exist = false)
+    private String roomName;
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwRoom.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwRoom.java
index ed79f01..8474876 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwRoom.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwRoom.java
@@ -115,4 +115,5 @@
     @ApiModelProperty(value = "妤煎眰鍚嶇О")
     @TableField(exist = false)
     private String floorName;
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwContractRevenueService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwContractRevenueService.java
new file mode 100644
index 0000000..5945c12
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwContractRevenueService.java
@@ -0,0 +1,97 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.YwContractRevenue;
+import java.util.List;
+
+/**
+ * 杩愮淮鍚堝悓鏀舵敮娴佹按Service瀹氫箟
+ * @author 姹熻箘韫�
+ * @date 2024/11/25 10:29
+ */
+public interface YwContractRevenueService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param ywContractRevenue 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(YwContractRevenue ywContractRevenue);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param ywContractRevenue 瀹炰綋瀵硅薄
+     */
+    void delete(YwContractRevenue ywContractRevenue);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param ywContractRevenue 瀹炰綋瀵硅薄
+     */
+    void updateById(YwContractRevenue ywContractRevenue);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param ywContractRevenues 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<YwContractRevenue> ywContractRevenues);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return YwContractRevenue
+     */
+    YwContractRevenue findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param ywContractRevenue 瀹炰綋瀵硅薄
+     * @return YwContractRevenue
+     */
+    YwContractRevenue findOne(YwContractRevenue ywContractRevenue);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param ywContractRevenue 瀹炰綋瀵硅薄
+     * @return List<YwContractRevenue>
+     */
+    List<YwContractRevenue> findList(YwContractRevenue ywContractRevenue);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<YwContractRevenue>
+     */
+    PageData<YwContractRevenue> findPage(PageWrap<YwContractRevenue> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param ywContractRevenue 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(YwContractRevenue ywContractRevenue);
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java
index b090fe2..05c57c5 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java
@@ -1,5 +1,6 @@
 package com.doumee.service.business.impl;
 
+import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.model.LoginUserInfo;
@@ -8,7 +9,9 @@
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.YwContractBillMapper;
+import com.doumee.dao.business.YwContractRevenueMapper;
 import com.doumee.dao.business.YwContractRoomMapper;
+import com.doumee.dao.business.YwRoomMapper;
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.system.MultifileMapper;
 import com.doumee.dao.system.model.Multifile;
@@ -27,6 +30,7 @@
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * 杩愮淮鍚堝悓璐﹀崟淇℃伅琛⊿ervice瀹炵幇
@@ -45,12 +49,21 @@
     @Autowired
     private MultifileMapper multifileMapper;
 
+    @Autowired
+    private YwContractRevenueMapper ywContractRevenueMapper;
+
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
+
+
+
+
     @Override
     public Integer create(YwContractBill ywContractBill) {
         if(Objects.isNull(ywContractBill)
                 || Objects.isNull(ywContractBill.getContractId())
                 || Objects.isNull(ywContractBill.getTotleFee())
-                || Objects.isNull(ywContractBill.getPlanPayData())
+                || Objects.isNull(ywContractBill.getPlanPayDate())
                 || Objects.isNull(ywContractBill.getCostType())
                 || Objects.isNull(ywContractBill.getBillType())
                 || Objects.isNull(ywContractBill.getCompanyId())
@@ -65,9 +78,11 @@
         ywContractBill.setCreateDate(new Date());
         ywContractBill.setCreator(loginUserInfo.getId());
         ywContractBill.setIsdeleted(Constants.ZERO);
+        ywContractBill.setType(Constants.contractBillType.create);
         ywContractBill.setStatus(Constants.ZERO);
         ywContractBillMapper.insert(ywContractBill);
 
+        //鎴挎簮鏁版嵁
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractBill.getYwContractRoomList())){
             for (YwContractRoom ywContractRoom:ywContractBill.getYwContractRoomList()) {
                 if(Objects.isNull(ywContractRoom)
@@ -79,11 +94,11 @@
                 ywContractRoom.setIsdeleted(Constants.ZERO);
                 ywContractRoom.setContractId(ywContractBill.getId());
                 ywContractRoom.setType(Constants.ONE);
-
             }
             ywContractRoomMapper.insert(ywContractBill.getYwContractRoomList());
         }
 
+        //闄勪欢鏁版嵁
         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractBill.getMultifileList())){
             for (Multifile multifile:ywContractBill.getMultifileList()) {
                 if(Objects.isNull(multifile)
@@ -142,6 +157,60 @@
         return ywContractBillMapper.selectById(id);
     }
 
+
+    public YwContractBill getDetail(Integer id) {
+        YwContractBill ywContractBill = ywContractBillMapper.selectJoinOne(YwContractBill.class,
+                new MPJLambdaWrapper<YwContractBill>().selectAll(YwContractBill.class)
+                        .select(" ( select ifnull(sum(yw.ACT_RECEIVABLE_FEE),0) from  yw_contract_revenue yw where yw.bill_id = t.id and yw.status = 0 and yw.isdeleted = 0 ) as  actReceivableFee  ")
+                        .selectAs(YwContract::getCode,YwContractBill::getContractCode)
+                        .selectAs(YwCustomer::getName,YwContractBill::getCustomerName)
+                        .leftJoin(YwContract.class,YwContract::getId,YwContractBill::getContractId)
+                        .leftJoin(YwCustomer.class,YwCustomer::getId,YwContract::getRenterId)
+                        .eq(YwContractBill::getIsdeleted,Constants.ZERO)
+                        .eq(YwContractBill::getId,id));
+        if(Objects.isNull(ywContractBill)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        //鎴挎簮鏁版嵁
+        ywContractBill.setYwContractRoomList(ywContractRoomMapper.selectJoinList(YwContractRoom.class,new MPJLambdaWrapper<YwContractRoom>()
+                .selectAll(YwContractRoom.class)
+                .selectAs(YwProject::getName,YwRoom::getProjectName)
+                .selectAs(YwFloor::getName,YwRoom::getFloorName)
+                .selectAs(YwBuilding::getName,YwRoom::getBuildingName)
+                .leftJoin(YwRoom.class,YwRoom::getId,YwContractRoom::getRoomId)
+                .leftJoin(YwFloor.class,YwFloor::getId,YwRoom::getFloor)
+                .leftJoin(YwProject.class,YwProject::getId,YwRoom::getProjectId)
+                .leftJoin(YwBuilding.class,YwBuilding::getId,YwRoom::getBuildingId)
+                .eq(YwContractRoom::getContractId,id)
+                .eq(YwContractRoom::getType,Constants.ONE)
+        ));
+        //鏀舵敮鏄庣粏
+        ywContractBill.setYwContractRevenueList(
+            ywContractRevenueMapper.selectJoinList(YwContractRevenue.class,new MPJLambdaWrapper<YwContractRevenue>()
+                            .selectAll(YwContractRevenue.class)
+                            .selectAs(YwCustomer::getName,YwContractRevenue::getCustomerNme)
+                            .leftJoin(YwContract.class,YwContract::getId,YwContractRevenue::getContractId)
+                            .leftJoin(YwCustomer.class,YwCustomer::getId,YwContract::getRenterId)
+                    .eq(YwContractRevenue::getBillId,id)
+            )
+        );
+        //闄勪欢鏁版嵁
+        List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda()
+                .eq(Multifile::getObjId,id)
+                .eq(Multifile::getObjType,Constants.MultiFile.FN_CONTRACT_BILL_FILE.getKey()));
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
+            String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
+                    +systemDictDataBiz.queryByCode(Constants.FTP,Constants.YW_CONTRACT_BILL).getCode();
+            for (Multifile multifile:multifileList) {
+                if(StringUtils.isNotBlank(multifile.getFileurl())){
+                    multifile.setFileurlFull(path + multifile.getFileurl());
+                }
+            }
+            ywContractBill.setMultifileList(multifileList);
+        }
+        return ywContractBill;
+    }
+
     @Override
     public YwContractBill findOne(YwContractBill ywContractBill) {
         QueryWrapper<YwContractBill> wrapper = new QueryWrapper<>(ywContractBill);
@@ -159,11 +228,10 @@
         IPage<YwContractBill> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
         MPJLambdaWrapper<YwContractBill> queryWrapper = new MPJLambdaWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
-
         YwContractBill model = pageWrap.getModel();
-
-        ywContractBillMapper.selectJoinPage(page,YwContractBill.class,
+        IPage<YwContractBill> iPage = ywContractBillMapper.selectJoinPage(page,YwContractBill.class,
             queryWrapper.selectAll(YwContractBill.class)
+                    .select(" ( select ifnull(sum(yw.ACT_RECEIVABLE_FEE),0) from  yw_contract_revenue yw where yw.bill_id = t.id and yw.status = 0 and yw.isdeleted = 0 ) as  actReceivableFee  ")
                     .selectAs(YwContract::getCode,YwContractBill::getContractCode)
                     .selectAs(YwCustomer::getName,YwContractBill::getCustomerName)
                     .leftJoin(YwContract.class,YwContract::getId,YwContractBill::getContractId)
@@ -177,16 +245,83 @@
                             YwContractBill::getPayStatus,model.getPayStatus())
                     .eq(Objects.nonNull(model)&&Objects.nonNull(model.getType()),
                             YwContractBill::getType,model.getType())
+                    .eq(Objects.nonNull(model)&&Objects.nonNull(model.getContractId()),
+                            YwContractBill::getContractId,model.getContractId())
                 .ge(YwContractBill::getPlanPayDate, Utils.Date.getStart(model.getPlanPayDateStart()))
                 .le(YwContractBill::getPlanPayDate, Utils.Date.getEnd(model.getPlanPayDateEnd())) )
         ;
+        this.dealRoomDetail(iPage.getRecords());
+        for (YwContractBill ywContractBill:iPage.getRecords()) {
+            //闇�鏀堕噾棰�
+            ywContractBill.setNeedReceivableFee(
+                    ywContractBill.getReceivableFee().subtract(ywContractBill.getActReceivableFee())
+            );
+            //妤煎畤鍚嶇О
+            List<YwContractRoom> ywContractRoomList = ywContractBill.getYwContractRoomList();
+            StringBuilder roomPathName = new StringBuilder();
+            for (YwContractRoom ywContractRoom:ywContractRoomList) {
+                if(StringUtils.isNotBlank(ywContractRoom.getProjectName())){
+                    roomPathName.append(ywContractRoom.getProjectName());
+                }
+                if(StringUtils.isNotBlank(ywContractRoom.getBuildingName())){
+                    roomPathName.append(ywContractRoom.getBuildingName());
+                }
+                if(StringUtils.isNotBlank(ywContractRoom.getFloorName())){
+                    roomPathName.append(ywContractRoom.getFloorName());
+                }
+                if(StringUtils.isNotBlank(ywContractRoom.getRoomName())){
+                    roomPathName.append(ywContractRoom.getRoomName());
+                }
+                if(StringUtils.isNotBlank(roomPathName)){
+                    roomPathName.append(";");
+                }
+            }
+            ywContractBill.setRoomPathName(roomPathName.toString());
 
-        return PageData.from(ywContractBillMapper.selectPage(page, queryWrapper));
+        }
+
+        return PageData.from(iPage);
     }
+
+    public void dealRoomDetail(List<YwContractBill> ywContractBillList){
+        //鏌ヨ璐﹀崟涓嬬殑妤煎畤鏁版嵁
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractBillList)){
+            //鑾峰彇鎵�鏈夋暟鎹�
+            List<Integer> billIdList = ywContractBillList.stream().map(i->i.getId()).collect(Collectors.toList());
+            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(billIdList)){
+                List<YwContractRoom> ywContractRoomList  = ywContractRoomMapper.selectJoinList(YwContractRoom.class,new MPJLambdaWrapper<YwContractRoom>()
+                        .selectAll(YwContractRoom.class)
+                        .selectAs(YwProject::getName,YwRoom::getProjectName)
+                        .selectAs(YwFloor::getName,YwRoom::getFloorName)
+                        .selectAs(YwBuilding::getName,YwRoom::getBuildingName)
+                        .selectAs(YwRoom::getName,YwContractRoom::getRoomName)
+                        .leftJoin(YwRoom.class,YwRoom::getId,YwContractRoom::getRoomId)
+                        .leftJoin(YwFloor.class,YwFloor::getId,YwRoom::getFloor)
+                        .leftJoin(YwProject.class,YwProject::getId,YwRoom::getProjectId)
+                        .leftJoin(YwBuilding.class,YwBuilding::getId,YwRoom::getBuildingId)
+                        .in(YwContractRoom::getContractId,billIdList)
+                        .eq(YwContractRoom::getType,Constants.ONE)
+                );
+                if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractRoomList)){
+                    for (YwContractBill ywContractBill:ywContractBillList) {
+                        ywContractBill.setYwContractRoomList(
+                                ywContractRoomList.stream().filter(i->Constants.equalsInteger(i.getContractId(),ywContractBill.getId())).collect(Collectors.toList())
+                        );
+                    }
+                }
+            }
+        }
+    }
+
 
     @Override
     public long count(YwContractBill ywContractBill) {
         QueryWrapper<YwContractBill> wrapper = new QueryWrapper<>(ywContractBill);
         return ywContractBillMapper.selectCount(wrapper);
     }
+
+
+
+
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractRevenueServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractRevenueServiceImpl.java
new file mode 100644
index 0000000..01e6e53
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractRevenueServiceImpl.java
@@ -0,0 +1,149 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.YwContractRevenueMapper;
+import com.doumee.dao.business.model.YwContractRevenue;
+import com.doumee.service.business.YwContractRevenueService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 杩愮淮鍚堝悓鏀舵敮娴佹按Service瀹炵幇
+ * @author 姹熻箘韫�
+ * @date 2024/11/25 10:29
+ */
+@Service
+public class YwContractRevenueServiceImpl implements YwContractRevenueService {
+
+    @Autowired
+    private YwContractRevenueMapper ywContractRevenueMapper;
+
+    @Override
+    public Integer create(YwContractRevenue ywContractRevenue) {
+        ywContractRevenueMapper.insert(ywContractRevenue);
+        return ywContractRevenue.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        ywContractRevenueMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(YwContractRevenue ywContractRevenue) {
+        UpdateWrapper<YwContractRevenue> deleteWrapper = new UpdateWrapper<>(ywContractRevenue);
+        ywContractRevenueMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        ywContractRevenueMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(YwContractRevenue ywContractRevenue) {
+        ywContractRevenueMapper.updateById(ywContractRevenue);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<YwContractRevenue> ywContractRevenues) {
+        if (CollectionUtils.isEmpty(ywContractRevenues)) {
+            return;
+        }
+        for (YwContractRevenue ywContractRevenue: ywContractRevenues) {
+            this.updateById(ywContractRevenue);
+        }
+    }
+
+    @Override
+    public YwContractRevenue findById(Integer id) {
+        return ywContractRevenueMapper.selectById(id);
+    }
+
+    @Override
+    public YwContractRevenue findOne(YwContractRevenue ywContractRevenue) {
+        QueryWrapper<YwContractRevenue> wrapper = new QueryWrapper<>(ywContractRevenue);
+        return ywContractRevenueMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<YwContractRevenue> findList(YwContractRevenue ywContractRevenue) {
+        QueryWrapper<YwContractRevenue> wrapper = new QueryWrapper<>(ywContractRevenue);
+        return ywContractRevenueMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<YwContractRevenue> findPage(PageWrap<YwContractRevenue> pageWrap) {
+        IPage<YwContractRevenue> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<YwContractRevenue> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        if (pageWrap.getModel().getId() != null) {
+            queryWrapper.lambda().eq(YwContractRevenue::getId, pageWrap.getModel().getId());
+        }
+        if (pageWrap.getModel().getCreator() != null) {
+            queryWrapper.lambda().eq(YwContractRevenue::getCreator, pageWrap.getModel().getCreator());
+        }
+        if (pageWrap.getModel().getCreateDate() != null) {
+            queryWrapper.lambda().ge(YwContractRevenue::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
+            queryWrapper.lambda().le(YwContractRevenue::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
+        }
+        if (pageWrap.getModel().getEditor() != null) {
+            queryWrapper.lambda().eq(YwContractRevenue::getEditor, pageWrap.getModel().getEditor());
+        }
+        if (pageWrap.getModel().getEditDate() != null) {
+            queryWrapper.lambda().ge(YwContractRevenue::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
+            queryWrapper.lambda().le(YwContractRevenue::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
+        }
+        if (pageWrap.getModel().getIsdeleted() != null) {
+            queryWrapper.lambda().eq(YwContractRevenue::getIsdeleted, pageWrap.getModel().getIsdeleted());
+        }
+        if (pageWrap.getModel().getRemark() != null) {
+            queryWrapper.lambda().eq(YwContractRevenue::getRemark, pageWrap.getModel().getRemark());
+        }
+        if (pageWrap.getModel().getStatus() != null) {
+            queryWrapper.lambda().eq(YwContractRevenue::getStatus, pageWrap.getModel().getStatus());
+        }
+        if (pageWrap.getModel().getActReceivableFee() != null) {
+            queryWrapper.lambda().eq(YwContractRevenue::getActReceivableFee, pageWrap.getModel().getActReceivableFee());
+        }
+        if (pageWrap.getModel().getActPayDate() != null) {
+            queryWrapper.lambda().ge(YwContractRevenue::getActPayDate, Utils.Date.getStart(pageWrap.getModel().getActPayDate()));
+            queryWrapper.lambda().le(YwContractRevenue::getActPayDate, Utils.Date.getEnd(pageWrap.getModel().getActPayDate()));
+        }
+        if (pageWrap.getModel().getPayType() != null) {
+            queryWrapper.lambda().eq(YwContractRevenue::getPayType, pageWrap.getModel().getPayType());
+        }
+        if (pageWrap.getModel().getCompanyId() != null) {
+            queryWrapper.lambda().eq(YwContractRevenue::getCompanyId, pageWrap.getModel().getCompanyId());
+        }
+        if (pageWrap.getModel().getAccountId() != null) {
+            queryWrapper.lambda().eq(YwContractRevenue::getAccountId, pageWrap.getModel().getAccountId());
+        }
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(ywContractRevenueMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(YwContractRevenue ywContractRevenue) {
+        QueryWrapper<YwContractRevenue> wrapper = new QueryWrapper<>(ywContractRevenue);
+        return ywContractRevenueMapper.selectCount(wrapper);
+    }
+}

--
Gitblit v1.9.3