From fa0c90d5a05eac4e83b204b86311de7cb0e4b418 Mon Sep 17 00:00:00 2001
From: sen <sen@qq.com>
Date: 星期三, 17 十二月 2025 16:08:03 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/cwxt_master' into cwxt_master
---
service/src/main/java/com/ruoyi/cwgl/domain/PayableFeeDetail.java | 131 +++
ui/admin-ui3/src/api/cwgl/receivableFeeDetail.ts | 67 +
service/src/main/java/com/ruoyi/cwgl/service/IPayableFeeDetailService.java | 102 ++
service/src/main/resources/mapper/cwgl/PayableFeeDetailMapper.xml | 182 +++++
service/src/main/java/com/ruoyi/cwgl/service/IReceivableFeeDetailService.java | 102 ++
service/src/main/java/com/ruoyi/cwgl/mapper/PayableFeeDetailMapper.java | 87 ++
ui/admin-ui3/src/views/cwgl/receivableFeeDetail/index.vue | 177 +++++
service/src/main/java/com/ruoyi/cwgl/service/impl/ReceivableFeeDetailServiceImpl.java | 182 +++++
service/src/main/java/com/ruoyi/cwgl/controller/PayableFeeDetailController.java | 108 +++
service/src/main/java/com/ruoyi/cwgl/mapper/ReceivableFeeDetailMapper.java | 87 ++
ui/admin-ui3/src/api/cwgl/payableFeeDetail.ts | 67 +
service/src/main/java/com/ruoyi/cwgl/domain/ReceivableFeeDetail.java | 132 +++
service/src/main/resources/mapper/cwgl/ReceivableFeeDetailMapper.xml | 182 +++++
ui/admin-ui3/src/views/cwgl/payableFeeDetail/index.vue | 177 +++++
service/src/main/java/com/ruoyi/cwgl/controller/ReceivableFeeDetailController.java | 108 +++
service/src/main/java/com/ruoyi/cwgl/service/impl/PayableFeeDetailServiceImpl.java | 182 +++++
16 files changed, 2,073 insertions(+), 0 deletions(-)
diff --git a/service/src/main/java/com/ruoyi/cwgl/controller/PayableFeeDetailController.java b/service/src/main/java/com/ruoyi/cwgl/controller/PayableFeeDetailController.java
new file mode 100644
index 0000000..be9f002
--- /dev/null
+++ b/service/src/main/java/com/ruoyi/cwgl/controller/PayableFeeDetailController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.cwgl.controller;
+
+import java.util.List;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.utils.file.DownloadExportUtil;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.cwgl.domain.PayableFeeDetail;
+import com.ruoyi.cwgl.service.IPayableFeeDetailService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 搴斾粯璐圭敤鏄庣粏Controller
+ *
+ * @author ruoyi
+ * @date 2025-12-17
+ */
+@RestController
+@RequestMapping("/cwgl/payableFeeDetail")
+public class PayableFeeDetailController extends BaseController
+{
+ @Autowired
+ private IPayableFeeDetailService payableFeeDetailService;
+
+
+
+ /**
+ * 鏌ヨ搴斾粯璐圭敤鏄庣粏鍒楄〃
+ */
+ @PreAuthorize("@ss.hasPermi('cwgl:payableFeeDetail:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(PayableFeeDetail payableFeeDetail)
+ {
+ startPage();
+ List<PayableFeeDetail> list = payableFeeDetailService.selectPayableFeeDetailList(payableFeeDetail);
+ return getDataTable(list);
+ }
+
+ /**
+ * 瀵煎嚭搴斾粯璐圭敤鏄庣粏鍒楄〃
+ * @param payableFeeDetail 鏌ヨ鏉′欢瀵硅薄
+ */
+ @PreAuthorize("@ss.hasPermi('cwgl:payableFeeDetail:export')")
+ @Log(title = "搴斾粯璐圭敤鏄庣粏", businessType = BusinessType.EXPORT)
+ @GetMapping("/export")
+ public AjaxResult export(PayableFeeDetail payableFeeDetail,String exportKey)
+ {
+ payableFeeDetailService.export(payableFeeDetail,exportKey);
+ return AjaxResult.success("瀵煎嚭璇锋眰鎴愬姛锛岃绋嶅悗鐐瑰嚮涓嬭浇...!");
+ }
+
+
+
+ /**
+ * 鑾峰彇搴斾粯璐圭敤鏄庣粏璇︾粏淇℃伅
+ */
+ @PreAuthorize("@ss.hasPermi('cwgl:payableFeeDetail:query')")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") Integer id)
+ {
+ return AjaxResult.success(payableFeeDetailService.selectPayableFeeDetailById(id));
+ }
+
+ /**
+ * 鏂板搴斾粯璐圭敤鏄庣粏
+ */
+ @PreAuthorize("@ss.hasPermi('cwgl:payableFeeDetail:add')")
+ @Log(title = "搴斾粯璐圭敤鏄庣粏", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody PayableFeeDetail payableFeeDetail)
+ {
+ return toAjax(payableFeeDetailService.insertPayableFeeDetail(payableFeeDetail));
+ }
+
+ /**
+ * 淇敼搴斾粯璐圭敤鏄庣粏
+ */
+ @PreAuthorize("@ss.hasPermi('cwgl:payableFeeDetail:edit')")
+ @Log(title = "搴斾粯璐圭敤鏄庣粏", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody PayableFeeDetail payableFeeDetail)
+ {
+ return toAjax(payableFeeDetailService.updatePayableFeeDetail(payableFeeDetail));
+ }
+
+ /**
+ * 鍒犻櫎搴斾粯璐圭敤鏄庣粏
+ */
+ @PreAuthorize("@ss.hasPermi('cwgl:payableFeeDetail:remove')")
+ @Log(title = "搴斾粯璐圭敤鏄庣粏", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable Integer[] ids)
+ {
+ return toAjax(payableFeeDetailService.deletePayableFeeDetailByIds(ids));
+ }
+}
diff --git a/service/src/main/java/com/ruoyi/cwgl/controller/ReceivableFeeDetailController.java b/service/src/main/java/com/ruoyi/cwgl/controller/ReceivableFeeDetailController.java
new file mode 100644
index 0000000..7bd0e15
--- /dev/null
+++ b/service/src/main/java/com/ruoyi/cwgl/controller/ReceivableFeeDetailController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.cwgl.controller;
+
+import java.util.List;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.utils.file.DownloadExportUtil;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.cwgl.domain.ReceivableFeeDetail;
+import com.ruoyi.cwgl.service.IReceivableFeeDetailService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 搴旀敹璐圭敤鏄庣粏Controller
+ *
+ * @author ruoyi
+ * @date 2025-12-17
+ */
+@RestController
+@RequestMapping("/cwgl/receivableFeeDetail")
+public class ReceivableFeeDetailController extends BaseController
+{
+ @Autowired
+ private IReceivableFeeDetailService receivableFeeDetailService;
+
+
+
+ /**
+ * 鏌ヨ搴旀敹璐圭敤鏄庣粏鍒楄〃
+ */
+ @PreAuthorize("@ss.hasPermi('cwgl:receivableFeeDetail:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(ReceivableFeeDetail receivableFeeDetail)
+ {
+ startPage();
+ List<ReceivableFeeDetail> list = receivableFeeDetailService.selectReceivableFeeDetailList(receivableFeeDetail);
+ return getDataTable(list);
+ }
+
+ /**
+ * 瀵煎嚭搴旀敹璐圭敤鏄庣粏鍒楄〃
+ * @param receivableFeeDetail 鏌ヨ鏉′欢瀵硅薄
+ */
+ @PreAuthorize("@ss.hasPermi('cwgl:receivableFeeDetail:export')")
+ @Log(title = "搴旀敹璐圭敤鏄庣粏", businessType = BusinessType.EXPORT)
+ @GetMapping("/export")
+ public AjaxResult export(ReceivableFeeDetail receivableFeeDetail,String exportKey)
+ {
+ receivableFeeDetailService.export(receivableFeeDetail,exportKey);
+ return AjaxResult.success("瀵煎嚭璇锋眰鎴愬姛锛岃绋嶅悗鐐瑰嚮涓嬭浇...!");
+ }
+
+
+
+ /**
+ * 鑾峰彇搴旀敹璐圭敤鏄庣粏璇︾粏淇℃伅
+ */
+ @PreAuthorize("@ss.hasPermi('cwgl:receivableFeeDetail:query')")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") Integer id)
+ {
+ return AjaxResult.success(receivableFeeDetailService.selectReceivableFeeDetailById(id));
+ }
+
+ /**
+ * 鏂板搴旀敹璐圭敤鏄庣粏
+ */
+ @PreAuthorize("@ss.hasPermi('cwgl:receivableFeeDetail:add')")
+ @Log(title = "搴旀敹璐圭敤鏄庣粏", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody ReceivableFeeDetail receivableFeeDetail)
+ {
+ return toAjax(receivableFeeDetailService.insertReceivableFeeDetail(receivableFeeDetail));
+ }
+
+ /**
+ * 淇敼搴旀敹璐圭敤鏄庣粏
+ */
+ @PreAuthorize("@ss.hasPermi('cwgl:receivableFeeDetail:edit')")
+ @Log(title = "搴旀敹璐圭敤鏄庣粏", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody ReceivableFeeDetail receivableFeeDetail)
+ {
+ return toAjax(receivableFeeDetailService.updateReceivableFeeDetail(receivableFeeDetail));
+ }
+
+ /**
+ * 鍒犻櫎搴旀敹璐圭敤鏄庣粏
+ */
+ @PreAuthorize("@ss.hasPermi('cwgl:receivableFeeDetail:remove')")
+ @Log(title = "搴旀敹璐圭敤鏄庣粏", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable Integer[] ids)
+ {
+ return toAjax(receivableFeeDetailService.deleteReceivableFeeDetailByIds(ids));
+ }
+}
diff --git a/service/src/main/java/com/ruoyi/cwgl/domain/PayableFeeDetail.java b/service/src/main/java/com/ruoyi/cwgl/domain/PayableFeeDetail.java
new file mode 100644
index 0000000..bb827b5
--- /dev/null
+++ b/service/src/main/java/com/ruoyi/cwgl/domain/PayableFeeDetail.java
@@ -0,0 +1,131 @@
+package com.ruoyi.cwgl.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.util.Date;
+import lombok.Data;
+/**
+ * 搴斾粯璐圭敤鏄庣粏瀵硅薄 payable_fee_detail
+ *
+ * @author ruoyi
+ * @date 2025-12-17
+ */
+@Data
+public class PayableFeeDetail{
+
+
+ /** ID */
+ @TableField("id")
+ private Integer id;
+
+
+ /** 搴斾粯璐圭敤绠$悊ID */
+ @Excel(name = "搴斾粯璐圭敤绠$悊ID")
+
+ @TableField("payable_fee_id")
+ private Integer payableFeeId;
+
+
+ /** 璐圭敤绫诲瀷 */
+ @Excel(name = "璐圭敤绫诲瀷")
+
+ @TableField("fee_type")
+ private String feeType;
+
+
+ /** 璐圭敤鍚嶇О */
+ @Excel(name = "璐圭敤鍚嶇О")
+
+ @TableField("fee_name")
+ private String feeName;
+
+
+ /** 璁¤垂鍗曚綅 */
+ @Excel(name = "璁¤垂鍗曚綅")
+
+ @TableField("billing_unit")
+ private String billingUnit;
+
+
+ /** 璁¤垂鍗曚环 */
+ @Excel(name = "璁¤垂鍗曚环")
+
+ @TableField("unit_price")
+ private BigDecimal unitPrice;
+
+
+ /** 璁¤垂鏁伴噺 */
+ @Excel(name = "璁¤垂鏁伴噺")
+
+ @TableField("billing_quantity")
+ private BigDecimal billingQuantity;
+
+
+ /** 璁¤垂閲戦 */
+ @Excel(name = "璁¤垂閲戦")
+
+ @TableField("billing_amount")
+ private BigDecimal billingAmount;
+
+
+ /** 瀹炰粯閲戦 */
+ @Excel(name = "瀹炰粯閲戦")
+
+ @TableField("actual_amount")
+ private BigDecimal actualAmount;
+
+
+ /** 甯佸埗 */
+ @Excel(name = "甯佸埗")
+
+ @TableField("currency")
+ private String currency;
+
+
+ /** 璐圭敤鐧昏鏃堕棿 */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "璐圭敤鐧昏鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
+ @TableField("fee_reg_time")
+ private Date feeRegTime;
+
+
+ /** 澶囨敞 */
+ @Excel(name = "澶囨敞")
+
+ @TableField("remark")
+ private String remark;
+
+
+ /** 鍒涘缓浜� */
+ @TableField("create_by")
+ private String createBy;
+
+
+ /** 鍒涘缓鏃堕棿 */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @TableField("create_time")
+ private Date createTime;
+
+
+ /** 鏇存柊浜� */
+ @TableField("update_by")
+ private String updateBy;
+
+
+ /** 鏇存柊鏃堕棿 */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @TableField("update_time")
+ private Date updateTime;
+
+
+ /** 鍒犻櫎鏍囪(0:姝e父;1:鍒犻櫎) */
+ @Excel(name = "鍒犻櫎鏍囪(0:姝e父;1:鍒犻櫎)")
+
+ @TableField("deleted")
+ private Integer deleted;
+
+
+}
diff --git a/service/src/main/java/com/ruoyi/cwgl/domain/ReceivableFeeDetail.java b/service/src/main/java/com/ruoyi/cwgl/domain/ReceivableFeeDetail.java
new file mode 100644
index 0000000..013373e
--- /dev/null
+++ b/service/src/main/java/com/ruoyi/cwgl/domain/ReceivableFeeDetail.java
@@ -0,0 +1,132 @@
+package com.ruoyi.cwgl.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.util.Date;
+import lombok.Data;
+/**
+ * 搴旀敹璐圭敤鏄庣粏瀵硅薄 receivable_fee_detail
+ *
+ * @author ruoyi
+ * @date 2025-12-17
+ */
+@Data
+public class ReceivableFeeDetail{
+
+
+ /** ID */
+ @TableField("id")
+ private Integer id;
+
+
+ /** 搴旀敹璐圭敤绠$悊ID */
+ @Excel(name = "搴旀敹璐圭敤绠$悊ID")
+
+ @TableField("receivable_fee_id")
+ private Integer receivableFeeId;
+
+
+ /** 璐圭敤绫诲瀷 */
+ @Excel(name = "璐圭敤绫诲瀷")
+
+ @TableField("fee_type")
+ private String feeType;
+
+
+ /** 璐圭敤鍚嶇О */
+ @Excel(name = "璐圭敤鍚嶇О")
+
+ @TableField("fee_name")
+ private String feeName;
+
+
+ /** 璁¤垂鍗曚綅 */
+ @Excel(name = "璁¤垂鍗曚綅")
+
+ @TableField("billing_unit")
+ private String billingUnit;
+
+
+ /** 璁¤垂鍗曚环 */
+ @Excel(name = "璁¤垂鍗曚环")
+
+ @TableField("unit_price")
+ private BigDecimal unitPrice;
+
+
+ /** 璁¤垂鏁伴噺 */
+ @Excel(name = "璁¤垂鏁伴噺")
+
+ @TableField("billing_quantity")
+ private BigDecimal billingQuantity;
+
+
+ /** 璁¤垂閲戦 */
+ @Excel(name = "璁¤垂閲戦")
+
+ @TableField("billing_amount")
+ private BigDecimal billingAmount;
+
+
+ /** 瀹炴敹閲戦 */
+ @Excel(name = "瀹炴敹閲戦")
+
+ @TableField("actual_amount")
+ private BigDecimal actualAmount;
+
+
+ /** 甯佸埗 */
+ @Excel(name = "甯佸埗")
+
+ @TableField("currency")
+ private String currency;
+
+
+ /** 璐圭敤鐧昏鏃堕棿 */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "璐圭敤鐧昏鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
+
+ @TableField("fee_reg_time")
+ private Date feeRegTime;
+
+
+ /** 澶囨敞 */
+ @Excel(name = "澶囨敞")
+
+ @TableField("remark")
+ private String remark;
+
+
+ /** 鍒涘缓浜� */
+ @TableField("create_by")
+ private String createBy;
+
+
+ /** 鍒涘缓鏃堕棿 */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @TableField("create_time")
+ private Date createTime;
+
+
+ /** 鏇存柊浜� */
+ @TableField("update_by")
+ private String updateBy;
+
+
+ /** 鏇存柊鏃堕棿 */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @TableField("update_time")
+ private Date updateTime;
+
+
+ /** 鍒犻櫎鏍囪(0:姝e父;1:鍒犻櫎) */
+ @Excel(name = "鍒犻櫎鏍囪(0:姝e父;1:鍒犻櫎)")
+
+ @TableField("deleted")
+ private Integer deleted;
+
+
+}
diff --git a/service/src/main/java/com/ruoyi/cwgl/mapper/PayableFeeDetailMapper.java b/service/src/main/java/com/ruoyi/cwgl/mapper/PayableFeeDetailMapper.java
new file mode 100644
index 0000000..2023ad9
--- /dev/null
+++ b/service/src/main/java/com/ruoyi/cwgl/mapper/PayableFeeDetailMapper.java
@@ -0,0 +1,87 @@
+package com.ruoyi.cwgl.mapper;
+
+import java.util.List;
+import com.ruoyi.cwgl.domain.PayableFeeDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+
+/**
+ * 搴斾粯璐圭敤鏄庣粏Mapper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2025-12-17
+ */
+public interface PayableFeeDetailMapper extends BaseMapper<PayableFeeDetail>
+{
+ /**
+ * 鏌ヨ搴斾粯璐圭敤鏄庣粏
+ *
+ * @param id 搴斾粯璐圭敤鏄庣粏ID
+ * @return 搴斾粯璐圭敤鏄庣粏
+ */
+ public PayableFeeDetail selectPayableFeeDetailById(Integer id);
+
+ /**
+ * 鏌ヨ搴斾粯璐圭敤鏄庣粏 璁板綍鏁�
+ *
+ * @param payableFeeDetail 搴斾粯璐圭敤鏄庣粏
+ * @return 搴斾粯璐圭敤鏄庣粏闆嗗悎
+ */
+ public int selectPayableFeeDetailCount(PayableFeeDetail payableFeeDetail);
+
+ /**
+ * 鏌ヨ搴斾粯璐圭敤鏄庣粏鍒楄〃
+ *
+ * @param payableFeeDetail 搴斾粯璐圭敤鏄庣粏
+ * @return 搴斾粯璐圭敤鏄庣粏闆嗗悎
+ */
+ public List<PayableFeeDetail> selectPayableFeeDetailList(PayableFeeDetail payableFeeDetail);
+
+ /**
+ * 鏂板搴斾粯璐圭敤鏄庣粏
+ *
+ * @param payableFeeDetail 搴斾粯璐圭敤鏄庣粏
+ * @return 缁撴灉
+ */
+ public int insertPayableFeeDetail(PayableFeeDetail payableFeeDetail);
+
+ /**
+ * 鏂板搴斾粯璐圭敤鏄庣粏[鎵归噺]
+ *
+ * @param payableFeeDetails 搴斾粯璐圭敤鏄庣粏
+ * @return 缁撴灉
+ */
+ public int insertPayableFeeDetailBatch(List<PayableFeeDetail> payableFeeDetails);
+
+ /**
+ * 淇敼搴斾粯璐圭敤鏄庣粏
+ *
+ * @param payableFeeDetail 搴斾粯璐圭敤鏄庣粏
+ * @return 缁撴灉
+ */
+ public int updatePayableFeeDetail(PayableFeeDetail payableFeeDetail);
+
+ /**
+ * 淇敼搴斾粯璐圭敤鏄庣粏[鎵归噺]
+ *
+ * @param payableFeeDetails 搴斾粯璐圭敤鏄庣粏
+ * @return 缁撴灉
+ */
+ public int updatePayableFeeDetailBatch(List<PayableFeeDetail> payableFeeDetails);
+
+ /**
+ * 鍒犻櫎搴斾粯璐圭敤鏄庣粏
+ *
+ * @param id 搴斾粯璐圭敤鏄庣粏ID
+ * @return 缁撴灉
+ */
+ public int deletePayableFeeDetailById(Integer id);
+
+ /**
+ * 鎵归噺鍒犻櫎搴斾粯璐圭敤鏄庣粏
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ public int deletePayableFeeDetailByIds(Integer[] ids);
+}
diff --git a/service/src/main/java/com/ruoyi/cwgl/mapper/ReceivableFeeDetailMapper.java b/service/src/main/java/com/ruoyi/cwgl/mapper/ReceivableFeeDetailMapper.java
new file mode 100644
index 0000000..a6c67d3
--- /dev/null
+++ b/service/src/main/java/com/ruoyi/cwgl/mapper/ReceivableFeeDetailMapper.java
@@ -0,0 +1,87 @@
+package com.ruoyi.cwgl.mapper;
+
+import java.util.List;
+import com.ruoyi.cwgl.domain.ReceivableFeeDetail;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+
+/**
+ * 搴旀敹璐圭敤鏄庣粏Mapper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2025-12-17
+ */
+public interface ReceivableFeeDetailMapper extends BaseMapper<ReceivableFeeDetail>
+{
+ /**
+ * 鏌ヨ搴旀敹璐圭敤鏄庣粏
+ *
+ * @param id 搴旀敹璐圭敤鏄庣粏ID
+ * @return 搴旀敹璐圭敤鏄庣粏
+ */
+ public ReceivableFeeDetail selectReceivableFeeDetailById(Integer id);
+
+ /**
+ * 鏌ヨ搴旀敹璐圭敤鏄庣粏 璁板綍鏁�
+ *
+ * @param receivableFeeDetail 搴旀敹璐圭敤鏄庣粏
+ * @return 搴旀敹璐圭敤鏄庣粏闆嗗悎
+ */
+ public int selectReceivableFeeDetailCount(ReceivableFeeDetail receivableFeeDetail);
+
+ /**
+ * 鏌ヨ搴旀敹璐圭敤鏄庣粏鍒楄〃
+ *
+ * @param receivableFeeDetail 搴旀敹璐圭敤鏄庣粏
+ * @return 搴旀敹璐圭敤鏄庣粏闆嗗悎
+ */
+ public List<ReceivableFeeDetail> selectReceivableFeeDetailList(ReceivableFeeDetail receivableFeeDetail);
+
+ /**
+ * 鏂板搴旀敹璐圭敤鏄庣粏
+ *
+ * @param receivableFeeDetail 搴旀敹璐圭敤鏄庣粏
+ * @return 缁撴灉
+ */
+ public int insertReceivableFeeDetail(ReceivableFeeDetail receivableFeeDetail);
+
+ /**
+ * 鏂板搴旀敹璐圭敤鏄庣粏[鎵归噺]
+ *
+ * @param receivableFeeDetails 搴旀敹璐圭敤鏄庣粏
+ * @return 缁撴灉
+ */
+ public int insertReceivableFeeDetailBatch(List<ReceivableFeeDetail> receivableFeeDetails);
+
+ /**
+ * 淇敼搴旀敹璐圭敤鏄庣粏
+ *
+ * @param receivableFeeDetail 搴旀敹璐圭敤鏄庣粏
+ * @return 缁撴灉
+ */
+ public int updateReceivableFeeDetail(ReceivableFeeDetail receivableFeeDetail);
+
+ /**
+ * 淇敼搴旀敹璐圭敤鏄庣粏[鎵归噺]
+ *
+ * @param receivableFeeDetails 搴旀敹璐圭敤鏄庣粏
+ * @return 缁撴灉
+ */
+ public int updateReceivableFeeDetailBatch(List<ReceivableFeeDetail> receivableFeeDetails);
+
+ /**
+ * 鍒犻櫎搴旀敹璐圭敤鏄庣粏
+ *
+ * @param id 搴旀敹璐圭敤鏄庣粏ID
+ * @return 缁撴灉
+ */
+ public int deleteReceivableFeeDetailById(Integer id);
+
+ /**
+ * 鎵归噺鍒犻櫎搴旀敹璐圭敤鏄庣粏
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ public int deleteReceivableFeeDetailByIds(Integer[] ids);
+}
diff --git a/service/src/main/java/com/ruoyi/cwgl/service/IPayableFeeDetailService.java b/service/src/main/java/com/ruoyi/cwgl/service/IPayableFeeDetailService.java
new file mode 100644
index 0000000..41a8145
--- /dev/null
+++ b/service/src/main/java/com/ruoyi/cwgl/service/IPayableFeeDetailService.java
@@ -0,0 +1,102 @@
+package com.ruoyi.cwgl.service;
+
+import java.util.List;
+import com.ruoyi.cwgl.domain.PayableFeeDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+/**
+ * 搴斾粯璐圭敤鏄庣粏Service鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2025-12-17
+ */
+public interface IPayableFeeDetailService extends IService<PayableFeeDetail>
+{
+ /**
+ * 鏌ヨ搴斾粯璐圭敤鏄庣粏
+ *
+ * @param id 搴斾粯璐圭敤鏄庣粏ID
+ * @return 搴斾粯璐圭敤鏄庣粏
+ */
+ public PayableFeeDetail selectPayableFeeDetailById(Integer id);
+
+ /**
+ * 鏌ヨ搴斾粯璐圭敤鏄庣粏 璁板綍鏁�
+ *
+ * @param payableFeeDetail 搴斾粯璐圭敤鏄庣粏
+ * @return 搴斾粯璐圭敤鏄庣粏闆嗗悎
+ */
+ public int selectPayableFeeDetailCount(PayableFeeDetail payableFeeDetail);
+
+ /**
+ * 鏌ヨ搴斾粯璐圭敤鏄庣粏鍒楄〃
+ *
+ * @param payableFeeDetail 搴斾粯璐圭敤鏄庣粏
+ * @return 搴斾粯璐圭敤鏄庣粏闆嗗悎
+ */
+ public List<PayableFeeDetail> selectPayableFeeDetailList(PayableFeeDetail payableFeeDetail);
+
+ /**
+ * 鏌ヨ搴斾粯璐圭敤鏄庣粏鍒楄〃 寮傛 瀵煎嚭
+ *
+ * @param payableFeeDetail 搴斾粯璐圭敤鏄庣粏
+ * @param exportKey 瀵煎嚭鍔熻兘鐨勫敮涓�鏍囪瘑
+ * @return 搴斾粯璐圭敤鏄庣粏闆嗗悎
+ */
+ public void export(PayableFeeDetail payableFeeDetail, String exportKey) ;
+
+
+ /**
+ * 鏂板搴斾粯璐圭敤鏄庣粏
+ *
+ * @param payableFeeDetail 搴斾粯璐圭敤鏄庣粏
+ * @return 缁撴灉
+ */
+ public int insertPayableFeeDetail(PayableFeeDetail payableFeeDetail);
+
+ /**
+ * 鏂板搴斾粯璐圭敤鏄庣粏[鎵归噺]
+ *
+ * @param payableFeeDetails 搴斾粯璐圭敤鏄庣粏
+ * @return 缁撴灉
+ */
+ public int insertPayableFeeDetailBatch(List<PayableFeeDetail> payableFeeDetails);
+
+ /**
+ * 淇敼搴斾粯璐圭敤鏄庣粏
+ *
+ * @param payableFeeDetail 搴斾粯璐圭敤鏄庣粏
+ * @return 缁撴灉
+ */
+ public int updatePayableFeeDetail(PayableFeeDetail payableFeeDetail);
+
+ /**
+ * 淇敼搴斾粯璐圭敤鏄庣粏[鎵归噺]
+ *
+ * @param payableFeeDetails 搴斾粯璐圭敤鏄庣粏
+ * @return 缁撴灉
+ */
+ public int updatePayableFeeDetailBatch(List<PayableFeeDetail> payableFeeDetails);
+ /**
+ * 鎵归噺鍒犻櫎搴斾粯璐圭敤鏄庣粏
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ public int deletePayableFeeDetailByIds(String ids);
+
+ /**
+ * 鎵归噺鍒犻櫎搴斾粯璐圭敤鏄庣粏
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ public int deletePayableFeeDetailByIds(Integer[] ids);
+
+ /**
+ * 鍒犻櫎搴斾粯璐圭敤鏄庣粏淇℃伅
+ *
+ * @param id 搴斾粯璐圭敤鏄庣粏ID
+ * @return 缁撴灉
+ */
+ public int deletePayableFeeDetailById(Integer id);
+}
diff --git a/service/src/main/java/com/ruoyi/cwgl/service/IReceivableFeeDetailService.java b/service/src/main/java/com/ruoyi/cwgl/service/IReceivableFeeDetailService.java
new file mode 100644
index 0000000..35081cb
--- /dev/null
+++ b/service/src/main/java/com/ruoyi/cwgl/service/IReceivableFeeDetailService.java
@@ -0,0 +1,102 @@
+package com.ruoyi.cwgl.service;
+
+import java.util.List;
+import com.ruoyi.cwgl.domain.ReceivableFeeDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+/**
+ * 搴旀敹璐圭敤鏄庣粏Service鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2025-12-17
+ */
+public interface IReceivableFeeDetailService extends IService<ReceivableFeeDetail>
+{
+ /**
+ * 鏌ヨ搴旀敹璐圭敤鏄庣粏
+ *
+ * @param id 搴旀敹璐圭敤鏄庣粏ID
+ * @return 搴旀敹璐圭敤鏄庣粏
+ */
+ public ReceivableFeeDetail selectReceivableFeeDetailById(Integer id);
+
+ /**
+ * 鏌ヨ搴旀敹璐圭敤鏄庣粏 璁板綍鏁�
+ *
+ * @param receivableFeeDetail 搴旀敹璐圭敤鏄庣粏
+ * @return 搴旀敹璐圭敤鏄庣粏闆嗗悎
+ */
+ public int selectReceivableFeeDetailCount(ReceivableFeeDetail receivableFeeDetail);
+
+ /**
+ * 鏌ヨ搴旀敹璐圭敤鏄庣粏鍒楄〃
+ *
+ * @param receivableFeeDetail 搴旀敹璐圭敤鏄庣粏
+ * @return 搴旀敹璐圭敤鏄庣粏闆嗗悎
+ */
+ public List<ReceivableFeeDetail> selectReceivableFeeDetailList(ReceivableFeeDetail receivableFeeDetail);
+
+ /**
+ * 鏌ヨ搴旀敹璐圭敤鏄庣粏鍒楄〃 寮傛 瀵煎嚭
+ *
+ * @param receivableFeeDetail 搴旀敹璐圭敤鏄庣粏
+ * @param exportKey 瀵煎嚭鍔熻兘鐨勫敮涓�鏍囪瘑
+ * @return 搴旀敹璐圭敤鏄庣粏闆嗗悎
+ */
+ public void export(ReceivableFeeDetail receivableFeeDetail, String exportKey) ;
+
+
+ /**
+ * 鏂板搴旀敹璐圭敤鏄庣粏
+ *
+ * @param receivableFeeDetail 搴旀敹璐圭敤鏄庣粏
+ * @return 缁撴灉
+ */
+ public int insertReceivableFeeDetail(ReceivableFeeDetail receivableFeeDetail);
+
+ /**
+ * 鏂板搴旀敹璐圭敤鏄庣粏[鎵归噺]
+ *
+ * @param receivableFeeDetails 搴旀敹璐圭敤鏄庣粏
+ * @return 缁撴灉
+ */
+ public int insertReceivableFeeDetailBatch(List<ReceivableFeeDetail> receivableFeeDetails);
+
+ /**
+ * 淇敼搴旀敹璐圭敤鏄庣粏
+ *
+ * @param receivableFeeDetail 搴旀敹璐圭敤鏄庣粏
+ * @return 缁撴灉
+ */
+ public int updateReceivableFeeDetail(ReceivableFeeDetail receivableFeeDetail);
+
+ /**
+ * 淇敼搴旀敹璐圭敤鏄庣粏[鎵归噺]
+ *
+ * @param receivableFeeDetails 搴旀敹璐圭敤鏄庣粏
+ * @return 缁撴灉
+ */
+ public int updateReceivableFeeDetailBatch(List<ReceivableFeeDetail> receivableFeeDetails);
+ /**
+ * 鎵归噺鍒犻櫎搴旀敹璐圭敤鏄庣粏
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ public int deleteReceivableFeeDetailByIds(String ids);
+
+ /**
+ * 鎵归噺鍒犻櫎搴旀敹璐圭敤鏄庣粏
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ public int deleteReceivableFeeDetailByIds(Integer[] ids);
+
+ /**
+ * 鍒犻櫎搴旀敹璐圭敤鏄庣粏淇℃伅
+ *
+ * @param id 搴旀敹璐圭敤鏄庣粏ID
+ * @return 缁撴灉
+ */
+ public int deleteReceivableFeeDetailById(Integer id);
+}
diff --git a/service/src/main/java/com/ruoyi/cwgl/service/impl/PayableFeeDetailServiceImpl.java b/service/src/main/java/com/ruoyi/cwgl/service/impl/PayableFeeDetailServiceImpl.java
new file mode 100644
index 0000000..fbf59c1
--- /dev/null
+++ b/service/src/main/java/com/ruoyi/cwgl/service/impl/PayableFeeDetailServiceImpl.java
@@ -0,0 +1,182 @@
+package com.ruoyi.cwgl.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.common.utils.DateUtils;
+import javax.annotation.Resource;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.stereotype.Service;
+import org.springframework.scheduling.annotation.Async;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.ruoyi.common.utils.PageUtils;
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceType;
+import com.ruoyi.common.core.service.BaseService;
+
+import com.ruoyi.cwgl.mapper.PayableFeeDetailMapper;
+import com.ruoyi.cwgl.domain.PayableFeeDetail;
+import com.ruoyi.cwgl.service.IPayableFeeDetailService;
+import com.ruoyi.common.core.text.Convert;
+
+/**
+ * 搴斾粯璐圭敤鏄庣粏Service涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2025-12-17
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class PayableFeeDetailServiceImpl extends BaseService<PayableFeeDetailMapper, PayableFeeDetail> implements IPayableFeeDetailService
+{
+ protected final Logger logger = LoggerFactory.getLogger(getClass());
+ @Resource
+ private PayableFeeDetailMapper payableFeeDetailMapper;
+
+
+ /**
+ * 鏌ヨ搴斾粯璐圭敤鏄庣粏
+ *
+ * @param id 搴斾粯璐圭敤鏄庣粏ID
+ * @return 搴斾粯璐圭敤鏄庣粏
+ */
+ @DataSource(DataSourceType.SLAVE)
+ @Override
+ public PayableFeeDetail selectPayableFeeDetailById(Integer id)
+ {
+ return payableFeeDetailMapper.selectPayableFeeDetailById(id);
+ }
+
+ /**
+ * 鏌ヨ搴斾粯璐圭敤鏄庣粏 璁板綍鏁�
+ *
+ * @param payableFeeDetail 搴斾粯璐圭敤鏄庣粏
+ * @return 搴斾粯璐圭敤鏄庣粏闆嗗悎
+ */
+ @DataSource(DataSourceType.SLAVE)
+ @Override
+ public int selectPayableFeeDetailCount(PayableFeeDetail payableFeeDetail)
+ {
+ return payableFeeDetailMapper.selectPayableFeeDetailCount(payableFeeDetail);
+ }
+
+ /**
+ * 鏌ヨ搴斾粯璐圭敤鏄庣粏鍒楄〃
+ *
+ * @param payableFeeDetail 搴斾粯璐圭敤鏄庣粏
+ * @return 搴斾粯璐圭敤鏄庣粏
+ */
+ @DataSource(DataSourceType.SLAVE)
+ @Override
+ public List<PayableFeeDetail> selectPayableFeeDetailList(PayableFeeDetail payableFeeDetail)
+ {
+ return payableFeeDetailMapper.selectPayableFeeDetailList(payableFeeDetail);
+ }
+
+ /**
+ * 鏌ヨ搴斾粯璐圭敤鏄庣粏鍒楄〃 寮傛 瀵煎嚭
+ *
+ * @param payableFeeDetail 搴斾粯璐圭敤鏄庣粏
+ * @param exportKey 瀵煎嚭鍔熻兘鐨勫敮涓�鏍囪瘑
+ * @return 搴斾粯璐圭敤鏄庣粏闆嗗悎
+ */
+ @DataSource(DataSourceType.SLAVE)
+ @Async
+ @Override
+ public void export(PayableFeeDetail payableFeeDetail,String exportKey) {
+
+ super.export(PayableFeeDetail.class,exportKey,"payableFeeDetailData",(pageNum)->{
+ PageUtils.startPage(pageNum, Constants.EXPORT_PATE_SIZE);
+ return selectPayableFeeDetailList(payableFeeDetail);
+ });
+ }
+
+
+ /**
+ * 鏂板搴斾粯璐圭敤鏄庣粏
+ *
+ * @param payableFeeDetail 搴斾粯璐圭敤鏄庣粏
+ * @return 缁撴灉
+ */
+ @Override
+ public int insertPayableFeeDetail(PayableFeeDetail payableFeeDetail)
+ {
+ payableFeeDetail.setCreateTime(DateUtils.getNowDate());
+ return payableFeeDetailMapper.insertPayableFeeDetail(payableFeeDetail);
+ }
+
+ /**
+ * 鏂板搴斾粯璐圭敤鏄庣粏[鎵归噺]
+ *
+ * @param payableFeeDetails 搴斾粯璐圭敤鏄庣粏
+ * @return 缁撴灉
+ */
+ @Override
+ public int insertPayableFeeDetailBatch(List<PayableFeeDetail> payableFeeDetails)
+ {
+ int rows = payableFeeDetailMapper.insertPayableFeeDetailBatch(payableFeeDetails);
+ return rows;
+ }
+
+ /**
+ * 淇敼搴斾粯璐圭敤鏄庣粏
+ *
+ * @param payableFeeDetail 搴斾粯璐圭敤鏄庣粏
+ * @return 缁撴灉
+ */
+ @Override
+ public int updatePayableFeeDetail(PayableFeeDetail payableFeeDetail)
+ {
+ payableFeeDetail.setUpdateTime(DateUtils.getNowDate());
+ return payableFeeDetailMapper.updatePayableFeeDetail(payableFeeDetail);
+ }
+
+ /**
+ * 淇敼搴斾粯璐圭敤鏄庣粏[鎵归噺]
+ *
+ * @param payableFeeDetails 搴斾粯璐圭敤鏄庣粏
+ * @return 缁撴灉
+ */
+ @Override
+ public int updatePayableFeeDetailBatch(List<PayableFeeDetail> payableFeeDetails){
+ return payableFeeDetailMapper.updatePayableFeeDetailBatch(payableFeeDetails);
+ }
+
+ /**
+ * 鍒犻櫎搴斾粯璐圭敤鏄庣粏瀵硅薄
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ @Override
+ public int deletePayableFeeDetailByIds(String ids)
+ {
+ return deletePayableFeeDetailByIds(Convert.toIntArray(ids));
+ }
+
+ /**
+ * 鍒犻櫎搴斾粯璐圭敤鏄庣粏瀵硅薄
+ *
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ @Override
+ public int deletePayableFeeDetailByIds(Integer[] ids)
+ {
+ return payableFeeDetailMapper.deletePayableFeeDetailByIds(ids);
+ }
+
+ /**
+ * 鍒犻櫎搴斾粯璐圭敤鏄庣粏淇℃伅
+ *
+ * @param id 搴斾粯璐圭敤鏄庣粏ID
+ * @return 缁撴灉
+ */
+ @Override
+ public int deletePayableFeeDetailById(Integer id)
+ {
+ return payableFeeDetailMapper.deletePayableFeeDetailById(id);
+ }
+}
diff --git a/service/src/main/java/com/ruoyi/cwgl/service/impl/ReceivableFeeDetailServiceImpl.java b/service/src/main/java/com/ruoyi/cwgl/service/impl/ReceivableFeeDetailServiceImpl.java
new file mode 100644
index 0000000..808dfb8
--- /dev/null
+++ b/service/src/main/java/com/ruoyi/cwgl/service/impl/ReceivableFeeDetailServiceImpl.java
@@ -0,0 +1,182 @@
+package com.ruoyi.cwgl.service.impl;
+
+import java.util.List;
+
+import com.ruoyi.common.utils.DateUtils;
+import javax.annotation.Resource;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.stereotype.Service;
+import org.springframework.scheduling.annotation.Async;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import com.ruoyi.common.utils.PageUtils;
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.annotation.DataSource;
+import com.ruoyi.common.enums.DataSourceType;
+import com.ruoyi.common.core.service.BaseService;
+
+import com.ruoyi.cwgl.mapper.ReceivableFeeDetailMapper;
+import com.ruoyi.cwgl.domain.ReceivableFeeDetail;
+import com.ruoyi.cwgl.service.IReceivableFeeDetailService;
+import com.ruoyi.common.core.text.Convert;
+
+/**
+ * 搴旀敹璐圭敤鏄庣粏Service涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2025-12-17
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class ReceivableFeeDetailServiceImpl extends BaseService<ReceivableFeeDetailMapper, ReceivableFeeDetail> implements IReceivableFeeDetailService
+{
+ protected final Logger logger = LoggerFactory.getLogger(getClass());
+ @Resource
+ private ReceivableFeeDetailMapper receivableFeeDetailMapper;
+
+
+ /**
+ * 鏌ヨ搴旀敹璐圭敤鏄庣粏
+ *
+ * @param id 搴旀敹璐圭敤鏄庣粏ID
+ * @return 搴旀敹璐圭敤鏄庣粏
+ */
+ @DataSource(DataSourceType.SLAVE)
+ @Override
+ public ReceivableFeeDetail selectReceivableFeeDetailById(Integer id)
+ {
+ return receivableFeeDetailMapper.selectReceivableFeeDetailById(id);
+ }
+
+ /**
+ * 鏌ヨ搴旀敹璐圭敤鏄庣粏 璁板綍鏁�
+ *
+ * @param receivableFeeDetail 搴旀敹璐圭敤鏄庣粏
+ * @return 搴旀敹璐圭敤鏄庣粏闆嗗悎
+ */
+ @DataSource(DataSourceType.SLAVE)
+ @Override
+ public int selectReceivableFeeDetailCount(ReceivableFeeDetail receivableFeeDetail)
+ {
+ return receivableFeeDetailMapper.selectReceivableFeeDetailCount(receivableFeeDetail);
+ }
+
+ /**
+ * 鏌ヨ搴旀敹璐圭敤鏄庣粏鍒楄〃
+ *
+ * @param receivableFeeDetail 搴旀敹璐圭敤鏄庣粏
+ * @return 搴旀敹璐圭敤鏄庣粏
+ */
+ @DataSource(DataSourceType.SLAVE)
+ @Override
+ public List<ReceivableFeeDetail> selectReceivableFeeDetailList(ReceivableFeeDetail receivableFeeDetail)
+ {
+ return receivableFeeDetailMapper.selectReceivableFeeDetailList(receivableFeeDetail);
+ }
+
+ /**
+ * 鏌ヨ搴旀敹璐圭敤鏄庣粏鍒楄〃 寮傛 瀵煎嚭
+ *
+ * @param receivableFeeDetail 搴旀敹璐圭敤鏄庣粏
+ * @param exportKey 瀵煎嚭鍔熻兘鐨勫敮涓�鏍囪瘑
+ * @return 搴旀敹璐圭敤鏄庣粏闆嗗悎
+ */
+ @DataSource(DataSourceType.SLAVE)
+ @Async
+ @Override
+ public void export(ReceivableFeeDetail receivableFeeDetail,String exportKey) {
+
+ super.export(ReceivableFeeDetail.class,exportKey,"receivableFeeDetailData",(pageNum)->{
+ PageUtils.startPage(pageNum, Constants.EXPORT_PATE_SIZE);
+ return selectReceivableFeeDetailList(receivableFeeDetail);
+ });
+ }
+
+
+ /**
+ * 鏂板搴旀敹璐圭敤鏄庣粏
+ *
+ * @param receivableFeeDetail 搴旀敹璐圭敤鏄庣粏
+ * @return 缁撴灉
+ */
+ @Override
+ public int insertReceivableFeeDetail(ReceivableFeeDetail receivableFeeDetail)
+ {
+ receivableFeeDetail.setCreateTime(DateUtils.getNowDate());
+ return receivableFeeDetailMapper.insertReceivableFeeDetail(receivableFeeDetail);
+ }
+
+ /**
+ * 鏂板搴旀敹璐圭敤鏄庣粏[鎵归噺]
+ *
+ * @param receivableFeeDetails 搴旀敹璐圭敤鏄庣粏
+ * @return 缁撴灉
+ */
+ @Override
+ public int insertReceivableFeeDetailBatch(List<ReceivableFeeDetail> receivableFeeDetails)
+ {
+ int rows = receivableFeeDetailMapper.insertReceivableFeeDetailBatch(receivableFeeDetails);
+ return rows;
+ }
+
+ /**
+ * 淇敼搴旀敹璐圭敤鏄庣粏
+ *
+ * @param receivableFeeDetail 搴旀敹璐圭敤鏄庣粏
+ * @return 缁撴灉
+ */
+ @Override
+ public int updateReceivableFeeDetail(ReceivableFeeDetail receivableFeeDetail)
+ {
+ receivableFeeDetail.setUpdateTime(DateUtils.getNowDate());
+ return receivableFeeDetailMapper.updateReceivableFeeDetail(receivableFeeDetail);
+ }
+
+ /**
+ * 淇敼搴旀敹璐圭敤鏄庣粏[鎵归噺]
+ *
+ * @param receivableFeeDetails 搴旀敹璐圭敤鏄庣粏
+ * @return 缁撴灉
+ */
+ @Override
+ public int updateReceivableFeeDetailBatch(List<ReceivableFeeDetail> receivableFeeDetails){
+ return receivableFeeDetailMapper.updateReceivableFeeDetailBatch(receivableFeeDetails);
+ }
+
+ /**
+ * 鍒犻櫎搴旀敹璐圭敤鏄庣粏瀵硅薄
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteReceivableFeeDetailByIds(String ids)
+ {
+ return deleteReceivableFeeDetailByIds(Convert.toIntArray(ids));
+ }
+
+ /**
+ * 鍒犻櫎搴旀敹璐圭敤鏄庣粏瀵硅薄
+ *
+ *
+ * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteReceivableFeeDetailByIds(Integer[] ids)
+ {
+ return receivableFeeDetailMapper.deleteReceivableFeeDetailByIds(ids);
+ }
+
+ /**
+ * 鍒犻櫎搴旀敹璐圭敤鏄庣粏淇℃伅
+ *
+ * @param id 搴旀敹璐圭敤鏄庣粏ID
+ * @return 缁撴灉
+ */
+ @Override
+ public int deleteReceivableFeeDetailById(Integer id)
+ {
+ return receivableFeeDetailMapper.deleteReceivableFeeDetailById(id);
+ }
+}
diff --git a/service/src/main/resources/mapper/cwgl/PayableFeeDetailMapper.xml b/service/src/main/resources/mapper/cwgl/PayableFeeDetailMapper.xml
new file mode 100644
index 0000000..205cc7b
--- /dev/null
+++ b/service/src/main/resources/mapper/cwgl/PayableFeeDetailMapper.xml
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.cwgl.mapper.PayableFeeDetailMapper">
+
+ <resultMap type="com.ruoyi.cwgl.domain.PayableFeeDetail" id="PayableFeeDetailResult">
+ <result property="id" column="id" />
+ <result property="payableFeeId" column="payable_fee_id" />
+ <result property="feeType" column="fee_type" />
+ <result property="feeName" column="fee_name" />
+ <result property="billingUnit" column="billing_unit" />
+ <result property="unitPrice" column="unit_price" />
+ <result property="billingQuantity" column="billing_quantity" />
+ <result property="billingAmount" column="billing_amount" />
+ <result property="actualAmount" column="actual_amount" />
+ <result property="currency" column="currency" />
+ <result property="feeRegTime" column="fee_reg_time" />
+ <result property="remark" column="remark" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ <result property="deleted" column="deleted" />
+ </resultMap>
+
+ <sql id="selectPayableFeeDetailVo">
+ select thisTab.id, thisTab.payable_fee_id, thisTab.fee_type, thisTab.fee_name, thisTab.billing_unit, thisTab.unit_price, thisTab.billing_quantity, thisTab.billing_amount, thisTab.actual_amount, thisTab.currency, thisTab.fee_reg_time, thisTab.remark, thisTab.create_by, thisTab.create_time, thisTab.update_by, thisTab.update_time, thisTab.deleted from payable_fee_detail AS thisTab
+ </sql>
+ <sql id="selectPayableFeeDetailVoCount">
+ select count(0) from payable_fee_detail as thisTab
+ </sql>
+
+ <sql id="whereCondition">
+ <if test="payableFeeId != null "> and thisTab.payable_fee_id = #{payableFeeId}</if>
+ <if test="feeType != null and feeType != ''"> and thisTab.fee_type = #{feeType}</if>
+ <if test="feeName != null and feeName != ''"> and thisTab.fee_name like concat('%', #{feeName}, '%')</if>
+ <if test="billingUnit != null and billingUnit != ''"> and thisTab.billing_unit = #{billingUnit}</if>
+ <if test="unitPrice != null "> and thisTab.unit_price = #{unitPrice}</if>
+ <if test="billingQuantity != null "> and thisTab.billing_quantity = #{billingQuantity}</if>
+ <if test="billingAmount != null "> and thisTab.billing_amount = #{billingAmount}</if>
+ <if test="actualAmount != null "> and thisTab.actual_amount = #{actualAmount}</if>
+ <if test="currency != null and currency != ''"> and thisTab.currency = #{currency}</if>
+ <if test="feeRegTime != null "> and thisTab.fee_reg_time = #{feeRegTime}</if>
+ <if test="deleted != null "> and thisTab.deleted = #{deleted}</if>
+ </sql>
+
+ <!--鏌ヨ-->
+ <select id="selectPayableFeeDetailById" parameterType="Integer" resultMap="PayableFeeDetailResult">
+ <include refid="selectPayableFeeDetailVo"/>
+ where id = #{id}
+ </select>
+
+ <select id="selectPayableFeeDetailCount" parameterType="com.ruoyi.cwgl.domain.PayableFeeDetail" resultType="int">
+ <include refid="selectPayableFeeDetailVoCount"/>
+ <where>
+ <include refid="whereCondition"/>
+ </where>
+ </select>
+
+ <select id="selectPayableFeeDetailList" parameterType="com.ruoyi.cwgl.domain.PayableFeeDetail" resultMap="PayableFeeDetailResult">
+ <include refid="selectPayableFeeDetailVo"/>
+ <where>
+ <include refid="whereCondition"/>
+ </where>
+ order by thisTab.id desc
+ </select>
+
+ <!-- 鏂板 -->
+ <insert id="insertPayableFeeDetail" parameterType="com.ruoyi.cwgl.domain.PayableFeeDetail" useGeneratedKeys="true" keyProperty="id">
+ insert into payable_fee_detail
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="payableFeeId != null">payable_fee_id,</if>
+ <if test="feeType != null and feeType != ''">fee_type,</if>
+ <if test="feeName != null and feeName != ''">fee_name,</if>
+ <if test="billingUnit != null">billing_unit,</if>
+ <if test="unitPrice != null">unit_price,</if>
+ <if test="billingQuantity != null">billing_quantity,</if>
+ <if test="billingAmount != null">billing_amount,</if>
+ <if test="actualAmount != null">actual_amount,</if>
+ <if test="currency != null">currency,</if>
+ <if test="feeRegTime != null">fee_reg_time,</if>
+ <if test="remark != null">remark,</if>
+ <if test="createBy != null">create_by,</if>
+ <if test="createTime != null">create_time,</if>
+ <if test="updateBy != null">update_by,</if>
+ <if test="updateTime != null">update_time,</if>
+ <if test="deleted != null">deleted,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="payableFeeId != null">#{payableFeeId},</if>
+ <if test="feeType != null and feeType != ''">#{feeType},</if>
+ <if test="feeName != null and feeName != ''">#{feeName},</if>
+ <if test="billingUnit != null">#{billingUnit},</if>
+ <if test="unitPrice != null">#{unitPrice},</if>
+ <if test="billingQuantity != null">#{billingQuantity},</if>
+ <if test="billingAmount != null">#{billingAmount},</if>
+ <if test="actualAmount != null">#{actualAmount},</if>
+ <if test="currency != null">#{currency},</if>
+ <if test="feeRegTime != null">#{feeRegTime},</if>
+ <if test="remark != null">#{remark},</if>
+ <if test="createBy != null">#{createBy},</if>
+ <if test="createTime != null">#{createTime},</if>
+ <if test="updateBy != null">#{updateBy},</if>
+ <if test="updateTime != null">#{updateTime},</if>
+ <if test="deleted != null">#{deleted},</if>
+ </trim>
+ </insert>
+
+ <insert id="insertPayableFeeDetailBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
+ insert into payable_fee_detail
+ <trim prefix="(" suffix=") values" suffixOverrides=",">
+ id,payable_fee_id,fee_type,fee_name,billing_unit,unit_price,billing_quantity,billing_amount,actual_amount,currency,fee_reg_time,remark,create_by,create_time,update_by,update_time,deleted,
+ </trim>
+ <foreach item="item" index="index" collection="list" separator=",">
+ <trim prefix="(" suffix=") " suffixOverrides=",">
+ #{item.id},#{item.payableFeeId},#{item.feeType},#{item.feeName},#{item.billingUnit},#{item.unitPrice},#{item.billingQuantity},#{item.billingAmount},#{item.actualAmount},#{item.currency},#{item.feeRegTime},#{item.remark},#{item.createBy},#{item.createTime},#{item.updateBy},#{item.updateTime},#{item.deleted},
+ </trim>
+ </foreach>
+ </insert>
+
+ <!-- 淇敼 -->
+ <update id="updatePayableFeeDetail" parameterType="com.ruoyi.cwgl.domain.PayableFeeDetail">
+ update payable_fee_detail
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="payableFeeId != null">payable_fee_id = #{payableFeeId},</if>
+ <if test="feeType != null and feeType != ''">fee_type = #{feeType},</if>
+ <if test="feeName != null and feeName != ''">fee_name = #{feeName},</if>
+ <if test="billingUnit != null">billing_unit = #{billingUnit},</if>
+ <if test="unitPrice != null">unit_price = #{unitPrice},</if>
+ <if test="billingQuantity != null">billing_quantity = #{billingQuantity},</if>
+ <if test="billingAmount != null">billing_amount = #{billingAmount},</if>
+ <if test="actualAmount != null">actual_amount = #{actualAmount},</if>
+ <if test="currency != null">currency = #{currency},</if>
+ <if test="feeRegTime != null">fee_reg_time = #{feeRegTime},</if>
+ <if test="remark != null">remark = #{remark},</if>
+ <if test="createBy != null">create_by = #{createBy},</if>
+ <if test="createTime != null">create_time = #{createTime},</if>
+ <if test="updateBy != null">update_by = #{updateBy},</if>
+ <if test="updateTime != null">update_time = #{updateTime},</if>
+ <if test="deleted != null">deleted = #{deleted},</if>
+ </trim>
+ where id = #{id}
+ </update>
+ <!-- 淇敼 -->
+ <update id="updatePayableFeeDetailBatch" parameterType="java.util.List">
+ <foreach collection="list" item="item" index="index" separator=";">
+ update payable_fee_detail
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="item.payableFeeId != null">payable_fee_id = #{item.payableFeeId},</if>
+ <if test="item.feeType != null and item.feeType != ''">fee_type = #{item.feeType},</if>
+ <if test="item.feeName != null and item.feeName != ''">fee_name = #{item.feeName},</if>
+ <if test="item.billingUnit != null">billing_unit = #{item.billingUnit},</if>
+ <if test="item.unitPrice != null">unit_price = #{item.unitPrice},</if>
+ <if test="item.billingQuantity != null">billing_quantity = #{item.billingQuantity},</if>
+ <if test="item.billingAmount != null">billing_amount = #{item.billingAmount},</if>
+ <if test="item.actualAmount != null">actual_amount = #{item.actualAmount},</if>
+ <if test="item.currency != null">currency = #{item.currency},</if>
+ <if test="item.feeRegTime != null">fee_reg_time = #{item.feeRegTime},</if>
+ <if test="item.remark != null">remark = #{item.remark},</if>
+ <if test="item.createBy != null">create_by = #{item.createBy},</if>
+ <if test="item.createTime != null">create_time = #{item.createTime},</if>
+ <if test="item.updateBy != null">update_by = #{item.updateBy},</if>
+ <if test="item.updateTime != null">update_time = #{item.updateTime},</if>
+ <if test="item.deleted != null">deleted = #{item.deleted},</if>
+ </trim>
+ where id = #{item.id}
+ </foreach>
+ </update>
+
+ <!--鍒犻櫎-->
+ <delete id="deletePayableFeeDetailById" parameterType="Integer">
+ delete from payable_fee_detail where id = #{id}
+ </delete>
+ <delete id="deletePayableFeeDetailByIds" parameterType="Integer">
+ delete from payable_fee_detail where id in
+ <foreach item="id" collection="array" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/service/src/main/resources/mapper/cwgl/ReceivableFeeDetailMapper.xml b/service/src/main/resources/mapper/cwgl/ReceivableFeeDetailMapper.xml
new file mode 100644
index 0000000..1a0da45
--- /dev/null
+++ b/service/src/main/resources/mapper/cwgl/ReceivableFeeDetailMapper.xml
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.cwgl.mapper.ReceivableFeeDetailMapper">
+
+ <resultMap type="com.ruoyi.cwgl.domain.ReceivableFeeDetail" id="ReceivableFeeDetailResult">
+ <result property="id" column="id" />
+ <result property="receivableFeeId" column="receivable_fee_id" />
+ <result property="feeType" column="fee_type" />
+ <result property="feeName" column="fee_name" />
+ <result property="billingUnit" column="billing_unit" />
+ <result property="unitPrice" column="unit_price" />
+ <result property="billingQuantity" column="billing_quantity" />
+ <result property="billingAmount" column="billing_amount" />
+ <result property="actualAmount" column="actual_amount" />
+ <result property="currency" column="currency" />
+ <result property="feeRegTime" column="fee_reg_time" />
+ <result property="remark" column="remark" />
+ <result property="createBy" column="create_by" />
+ <result property="createTime" column="create_time" />
+ <result property="updateBy" column="update_by" />
+ <result property="updateTime" column="update_time" />
+ <result property="deleted" column="deleted" />
+ </resultMap>
+
+ <sql id="selectReceivableFeeDetailVo">
+ select thisTab.id, thisTab.receivable_fee_id, thisTab.fee_type, thisTab.fee_name, thisTab.billing_unit, thisTab.unit_price, thisTab.billing_quantity, thisTab.billing_amount, thisTab.actual_amount, thisTab.currency, thisTab.fee_reg_time, thisTab.remark, thisTab.create_by, thisTab.create_time, thisTab.update_by, thisTab.update_time, thisTab.deleted from receivable_fee_detail AS thisTab
+ </sql>
+ <sql id="selectReceivableFeeDetailVoCount">
+ select count(0) from receivable_fee_detail as thisTab
+ </sql>
+
+ <sql id="whereCondition">
+ <if test="receivableFeeId != null "> and thisTab.receivable_fee_id = #{receivableFeeId}</if>
+ <if test="feeType != null and feeType != ''"> and thisTab.fee_type = #{feeType}</if>
+ <if test="feeName != null and feeName != ''"> and thisTab.fee_name like concat('%', #{feeName}, '%')</if>
+ <if test="billingUnit != null and billingUnit != ''"> and thisTab.billing_unit = #{billingUnit}</if>
+ <if test="unitPrice != null "> and thisTab.unit_price = #{unitPrice}</if>
+ <if test="billingQuantity != null "> and thisTab.billing_quantity = #{billingQuantity}</if>
+ <if test="billingAmount != null "> and thisTab.billing_amount = #{billingAmount}</if>
+ <if test="actualAmount != null "> and thisTab.actual_amount = #{actualAmount}</if>
+ <if test="currency != null and currency != ''"> and thisTab.currency = #{currency}</if>
+ <if test="feeRegTime != null "> and thisTab.fee_reg_time = #{feeRegTime}</if>
+ <if test="deleted != null "> and thisTab.deleted = #{deleted}</if>
+ </sql>
+
+ <!--鏌ヨ-->
+ <select id="selectReceivableFeeDetailById" parameterType="Integer" resultMap="ReceivableFeeDetailResult">
+ <include refid="selectReceivableFeeDetailVo"/>
+ where id = #{id}
+ </select>
+
+ <select id="selectReceivableFeeDetailCount" parameterType="com.ruoyi.cwgl.domain.ReceivableFeeDetail" resultType="int">
+ <include refid="selectReceivableFeeDetailVoCount"/>
+ <where>
+ <include refid="whereCondition"/>
+ </where>
+ </select>
+
+ <select id="selectReceivableFeeDetailList" parameterType="com.ruoyi.cwgl.domain.ReceivableFeeDetail" resultMap="ReceivableFeeDetailResult">
+ <include refid="selectReceivableFeeDetailVo"/>
+ <where>
+ <include refid="whereCondition"/>
+ </where>
+ order by thisTab.id desc
+ </select>
+
+ <!-- 鏂板 -->
+ <insert id="insertReceivableFeeDetail" parameterType="com.ruoyi.cwgl.domain.ReceivableFeeDetail" useGeneratedKeys="true" keyProperty="id">
+ insert into receivable_fee_detail
+ <trim prefix="(" suffix=")" suffixOverrides=",">
+ <if test="receivableFeeId != null">receivable_fee_id,</if>
+ <if test="feeType != null and feeType != ''">fee_type,</if>
+ <if test="feeName != null and feeName != ''">fee_name,</if>
+ <if test="billingUnit != null">billing_unit,</if>
+ <if test="unitPrice != null">unit_price,</if>
+ <if test="billingQuantity != null">billing_quantity,</if>
+ <if test="billingAmount != null">billing_amount,</if>
+ <if test="actualAmount != null">actual_amount,</if>
+ <if test="currency != null">currency,</if>
+ <if test="feeRegTime != null">fee_reg_time,</if>
+ <if test="remark != null">remark,</if>
+ <if test="createBy != null">create_by,</if>
+ <if test="createTime != null">create_time,</if>
+ <if test="updateBy != null">update_by,</if>
+ <if test="updateTime != null">update_time,</if>
+ <if test="deleted != null">deleted,</if>
+ </trim>
+ <trim prefix="values (" suffix=")" suffixOverrides=",">
+ <if test="receivableFeeId != null">#{receivableFeeId},</if>
+ <if test="feeType != null and feeType != ''">#{feeType},</if>
+ <if test="feeName != null and feeName != ''">#{feeName},</if>
+ <if test="billingUnit != null">#{billingUnit},</if>
+ <if test="unitPrice != null">#{unitPrice},</if>
+ <if test="billingQuantity != null">#{billingQuantity},</if>
+ <if test="billingAmount != null">#{billingAmount},</if>
+ <if test="actualAmount != null">#{actualAmount},</if>
+ <if test="currency != null">#{currency},</if>
+ <if test="feeRegTime != null">#{feeRegTime},</if>
+ <if test="remark != null">#{remark},</if>
+ <if test="createBy != null">#{createBy},</if>
+ <if test="createTime != null">#{createTime},</if>
+ <if test="updateBy != null">#{updateBy},</if>
+ <if test="updateTime != null">#{updateTime},</if>
+ <if test="deleted != null">#{deleted},</if>
+ </trim>
+ </insert>
+
+ <insert id="insertReceivableFeeDetailBatch" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id">
+ insert into receivable_fee_detail
+ <trim prefix="(" suffix=") values" suffixOverrides=",">
+ id,receivable_fee_id,fee_type,fee_name,billing_unit,unit_price,billing_quantity,billing_amount,actual_amount,currency,fee_reg_time,remark,create_by,create_time,update_by,update_time,deleted,
+ </trim>
+ <foreach item="item" index="index" collection="list" separator=",">
+ <trim prefix="(" suffix=") " suffixOverrides=",">
+ #{item.id},#{item.receivableFeeId},#{item.feeType},#{item.feeName},#{item.billingUnit},#{item.unitPrice},#{item.billingQuantity},#{item.billingAmount},#{item.actualAmount},#{item.currency},#{item.feeRegTime},#{item.remark},#{item.createBy},#{item.createTime},#{item.updateBy},#{item.updateTime},#{item.deleted},
+ </trim>
+ </foreach>
+ </insert>
+
+ <!-- 淇敼 -->
+ <update id="updateReceivableFeeDetail" parameterType="com.ruoyi.cwgl.domain.ReceivableFeeDetail">
+ update receivable_fee_detail
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="receivableFeeId != null">receivable_fee_id = #{receivableFeeId},</if>
+ <if test="feeType != null and feeType != ''">fee_type = #{feeType},</if>
+ <if test="feeName != null and feeName != ''">fee_name = #{feeName},</if>
+ <if test="billingUnit != null">billing_unit = #{billingUnit},</if>
+ <if test="unitPrice != null">unit_price = #{unitPrice},</if>
+ <if test="billingQuantity != null">billing_quantity = #{billingQuantity},</if>
+ <if test="billingAmount != null">billing_amount = #{billingAmount},</if>
+ <if test="actualAmount != null">actual_amount = #{actualAmount},</if>
+ <if test="currency != null">currency = #{currency},</if>
+ <if test="feeRegTime != null">fee_reg_time = #{feeRegTime},</if>
+ <if test="remark != null">remark = #{remark},</if>
+ <if test="createBy != null">create_by = #{createBy},</if>
+ <if test="createTime != null">create_time = #{createTime},</if>
+ <if test="updateBy != null">update_by = #{updateBy},</if>
+ <if test="updateTime != null">update_time = #{updateTime},</if>
+ <if test="deleted != null">deleted = #{deleted},</if>
+ </trim>
+ where id = #{id}
+ </update>
+ <!-- 淇敼 -->
+ <update id="updateReceivableFeeDetailBatch" parameterType="java.util.List">
+ <foreach collection="list" item="item" index="index" separator=";">
+ update receivable_fee_detail
+ <trim prefix="SET" suffixOverrides=",">
+ <if test="item.receivableFeeId != null">receivable_fee_id = #{item.receivableFeeId},</if>
+ <if test="item.feeType != null and item.feeType != ''">fee_type = #{item.feeType},</if>
+ <if test="item.feeName != null and item.feeName != ''">fee_name = #{item.feeName},</if>
+ <if test="item.billingUnit != null">billing_unit = #{item.billingUnit},</if>
+ <if test="item.unitPrice != null">unit_price = #{item.unitPrice},</if>
+ <if test="item.billingQuantity != null">billing_quantity = #{item.billingQuantity},</if>
+ <if test="item.billingAmount != null">billing_amount = #{item.billingAmount},</if>
+ <if test="item.actualAmount != null">actual_amount = #{item.actualAmount},</if>
+ <if test="item.currency != null">currency = #{item.currency},</if>
+ <if test="item.feeRegTime != null">fee_reg_time = #{item.feeRegTime},</if>
+ <if test="item.remark != null">remark = #{item.remark},</if>
+ <if test="item.createBy != null">create_by = #{item.createBy},</if>
+ <if test="item.createTime != null">create_time = #{item.createTime},</if>
+ <if test="item.updateBy != null">update_by = #{item.updateBy},</if>
+ <if test="item.updateTime != null">update_time = #{item.updateTime},</if>
+ <if test="item.deleted != null">deleted = #{item.deleted},</if>
+ </trim>
+ where id = #{item.id}
+ </foreach>
+ </update>
+
+ <!--鍒犻櫎-->
+ <delete id="deleteReceivableFeeDetailById" parameterType="Integer">
+ delete from receivable_fee_detail where id = #{id}
+ </delete>
+ <delete id="deleteReceivableFeeDetailByIds" parameterType="Integer">
+ delete from receivable_fee_detail where id in
+ <foreach item="id" collection="array" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/ui/admin-ui3/src/api/cwgl/payableFeeDetail.ts b/ui/admin-ui3/src/api/cwgl/payableFeeDetail.ts
new file mode 100644
index 0000000..df9b68f
--- /dev/null
+++ b/ui/admin-ui3/src/api/cwgl/payableFeeDetail.ts
@@ -0,0 +1,67 @@
+import request,{download,requestType} from "@/utils/request";
+import {BaseEntityInterface} from "@/utils/globalInterface";
+export interface PayableFeeDetailI extends BaseEntityInterface{
+ id ?: number , payableFeeId ?: number , feeType ?: string , feeName ?: string , billingUnit ?: string , unitPrice ?: string , billingQuantity ?: string , billingAmount ?: string , actualAmount ?: string , currency ?: string , feeRegTime ?: string , remark ?: string , createBy ?: string , createTime ?: string , updateBy ?: string , updateTime ?: string , deleted ?: number }
+
+
+/**
+ * 鏌ヨ搴斾粯璐圭敤鏄庣粏鍒楄〃
+ */
+export const listPayableFeeDetail:requestType = (query) => {
+ return request({
+ url: '/cwgl/payableFeeDetail/list',
+ method:'get',
+ params:query
+ })
+}
+/**
+ * 鏌ヨ搴斾粯璐圭敤鏄庣粏璇︾粏
+ */
+export const getPayableFeeDetail:requestType = (id) => {
+ return request({
+ url: '/cwgl/payableFeeDetail/' + id,
+ method:'get'
+ })
+}
+
+/**
+ * 鏂板搴斾粯璐圭敤鏄庣粏
+ */
+export const addPayableFeeDetail:requestType = (data) => {
+ return request({
+ url: '/cwgl/payableFeeDetail',
+ method: 'post',
+ data
+ })
+}
+
+/**
+ * 淇敼搴斾粯璐圭敤鏄庣粏
+ */
+export const updatePayableFeeDetail:requestType = (data) => {
+ return request({
+ url: '/cwgl/payableFeeDetail',
+ method: 'put',
+ data
+ })
+}
+
+/**
+ * 鍒犻櫎搴斾粯璐圭敤鏄庣粏
+ */
+export const delPayableFeeDetail:requestType = (id) => {
+ return request({
+ url: '/cwgl/payableFeeDetail/' + id,
+ method: 'delete'
+ })
+}
+
+
+/**
+ * 瀵煎嚭搴斾粯璐圭敤鏄庣粏
+ */
+export const exportPayableFeeDetail:requestType = (query) => {
+ return new Promise<any>(()=>{
+ download('/cwgl/payableFeeDetail/export',query);
+ })
+}
diff --git a/ui/admin-ui3/src/api/cwgl/receivableFeeDetail.ts b/ui/admin-ui3/src/api/cwgl/receivableFeeDetail.ts
new file mode 100644
index 0000000..68618be
--- /dev/null
+++ b/ui/admin-ui3/src/api/cwgl/receivableFeeDetail.ts
@@ -0,0 +1,67 @@
+import request,{download,requestType} from "@/utils/request";
+import {BaseEntityInterface} from "@/utils/globalInterface";
+export interface ReceivableFeeDetailI extends BaseEntityInterface{
+ id ?: number , receivableFeeId ?: number , feeType ?: string , feeName ?: string , billingUnit ?: string , unitPrice ?: string , billingQuantity ?: string , billingAmount ?: string , actualAmount ?: string , currency ?: string , feeRegTime ?: string , remark ?: string , createBy ?: string , createTime ?: string , updateBy ?: string , updateTime ?: string , deleted ?: number }
+
+
+/**
+ * 鏌ヨ搴旀敹璐圭敤鏄庣粏鍒楄〃
+ */
+export const listReceivableFeeDetail:requestType = (query) => {
+ return request({
+ url: '/cwgl/receivableFeeDetail/list',
+ method:'get',
+ params:query
+ })
+}
+/**
+ * 鏌ヨ搴旀敹璐圭敤鏄庣粏璇︾粏
+ */
+export const getReceivableFeeDetail:requestType = (id) => {
+ return request({
+ url: '/cwgl/receivableFeeDetail/' + id,
+ method:'get'
+ })
+}
+
+/**
+ * 鏂板搴旀敹璐圭敤鏄庣粏
+ */
+export const addReceivableFeeDetail:requestType = (data) => {
+ return request({
+ url: '/cwgl/receivableFeeDetail',
+ method: 'post',
+ data
+ })
+}
+
+/**
+ * 淇敼搴旀敹璐圭敤鏄庣粏
+ */
+export const updateReceivableFeeDetail:requestType = (data) => {
+ return request({
+ url: '/cwgl/receivableFeeDetail',
+ method: 'put',
+ data
+ })
+}
+
+/**
+ * 鍒犻櫎搴旀敹璐圭敤鏄庣粏
+ */
+export const delReceivableFeeDetail:requestType = (id) => {
+ return request({
+ url: '/cwgl/receivableFeeDetail/' + id,
+ method: 'delete'
+ })
+}
+
+
+/**
+ * 瀵煎嚭搴旀敹璐圭敤鏄庣粏
+ */
+export const exportReceivableFeeDetail:requestType = (query) => {
+ return new Promise<any>(()=>{
+ download('/cwgl/receivableFeeDetail/export',query);
+ })
+}
diff --git a/ui/admin-ui3/src/views/cwgl/payableFeeDetail/index.vue b/ui/admin-ui3/src/views/cwgl/payableFeeDetail/index.vue
new file mode 100644
index 0000000..03763af
--- /dev/null
+++ b/ui/admin-ui3/src/views/cwgl/payableFeeDetail/index.vue
@@ -0,0 +1,177 @@
+<template>
+ <basicContainer >
+ <avue-crud
+ :option="option"
+ :table-loading="pageF.loading"
+ :data="tableData"
+ :page="page"
+ :permission="permissionList"
+ :before-open="beforeOpen"
+ v-model="form"
+ ref="crudRef"
+ @row-update="rowUpdate"
+ @row-save="rowSave"
+ @refresh-change="refreshChange"
+ @row-del="rowDel"
+ @search-change="searchChange"
+ @search-reset="searchReset"
+ @selection-change="selectionChange"
+ @current-change="currentChange"
+ @size-change="sizeChange"
+ @on-load="onLoad"
+ >
+ <template #menu-left>
+ <el-button
+ type="success"
+ icon="Edit"
+ :disabled="pageF.single"
+ v-hasPermi="['cwgl:payableFeeDetail:edit']"
+ @click="handleUpdate">淇敼
+ </el-button>
+ <el-button
+ type="danger"
+ icon="Delete"
+ :disabled="pageF.multiple"
+ @click="handleDelete"
+ v-hasPermi="['cwgl:payableFeeDetail:remove']"
+ >鍒犻櫎
+ </el-button>
+ <el-button
+ type="warning"
+ plain
+ icon="Download"
+ @click="handleExport"
+ v-hasPermi="['cwgl:payableFeeDetail:export']"
+ >瀵煎嚭
+ </el-button>
+ </template>
+ </avue-crud>
+ </basicContainer>
+</template>
+
+<script setup name="payableFeeDetail" lang="ts">
+ import {PayableFeeDetailI,addPayableFeeDetail, delPayableFeeDetail, exportPayableFeeDetail, getPayableFeeDetail, listPayableFeeDetail, updatePayableFeeDetail} from "@/api/cwgl/payableFeeDetail";
+ import useCurrentInstance from "@/utils/useCurrentInstance";
+ import {computed,reactive, ref, toRefs} from "vue";
+ import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface";
+ import {usePagePlus} from "@/hooks/usePagePlus";
+ import {hasPermission} from "@/utils/permissionUtils";
+
+ const { proxy } = useCurrentInstance();
+ const crudRef = ref();
+
+ const permissionList = computed(()=>{
+ return {
+ addBtn: hasPermission(["cwgl:payableFeeDetail:add"]),
+ delBtn: hasPermission(["cwgl:payableFeeDetail:remove"]),
+ editBtn: hasPermission(["cwgl:payableFeeDetail:edit"]),
+ viewBtn: hasPermission(["cwgl:payableFeeDetail:query"]),
+ }
+ })
+
+ const data = reactive({
+ form:<PayableFeeDetailI>{},
+ queryParams:<PayableFeeDetailI&PageQueryInterface>{},
+ page: <PagesInterface>{
+ pageSize: 10,
+ total: 0,
+ currentPage: 1,
+ },
+ selectionList:[],
+ })
+ const {queryParams,form,page,selectionList} = toRefs(data);
+ const option = ref({
+ pageKey: 'PayableFeeDetail',
+ rowKey: 'id',
+ column: {
+ id: {
+ label: 'ID',
+ },
+ payableFeeId: {
+ label: '搴斾粯璐圭敤绠$悊ID',
+ rules: [
+ {
+ required: true,
+ message: "搴斾粯璐圭敤绠$悊ID涓嶈兘涓虹┖", trigger: "blur" }
+ ], },
+ feeType: {
+ label: '璐圭敤绫诲瀷',
+ rules: [
+ {
+ required: true,
+ message: "璐圭敤绫诲瀷涓嶈兘涓虹┖", trigger: "change"
+ }
+ ], },
+ feeName: {
+ label: '璐圭敤鍚嶇О',
+ rules: [
+ {
+ required: true,
+ message: "璐圭敤鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }
+ ], },
+ billingUnit: {
+ label: '璁¤垂鍗曚綅',
+ },
+ unitPrice: {
+ label: '璁¤垂鍗曚环',
+ },
+ billingQuantity: {
+ label: '璁¤垂鏁伴噺',
+ },
+ billingAmount: {
+ label: '璁¤垂閲戦',
+ },
+ actualAmount: {
+ label: '瀹炰粯閲戦',
+ },
+ currency: {
+ label: '甯佸埗',
+ },
+ feeRegTime: {
+ label: '璐圭敤鐧昏鏃堕棿',
+ },
+ remark: {
+ label: '澶囨敞',
+ type: 'textarea', minRows: 3, maxRows: 5,
+ },
+ createBy: {
+ label: '鍒涘缓浜�',
+ },
+ createTime: {
+ label: '鍒涘缓鏃堕棿',
+ },
+ updateBy: {
+ label: '鏇存柊浜�',
+ },
+ updateTime: {
+ label: '鏇存柊鏃堕棿',
+ },
+ deleted: {
+ label: '鍒犻櫎鏍囪(0:姝e父;1:鍒犻櫎)',
+ },
+ }
+ })
+
+ const { tableData,pageF,rowSave,rowUpdate,rowDel,beforeOpen,searchChange,
+ searchReset,selectionChange,onLoad,currentChange,sizeChange,handleDelete,handleExport,handleUpdate,refreshChange} = usePagePlus({
+ form:form,
+ option:option,
+ queryParams:queryParams,
+ idKey:'id',
+ page:page.value,
+ getListApi:listPayableFeeDetail,
+ getDetailApi:getPayableFeeDetail,
+ exportApi:exportPayableFeeDetail,
+ deleteApi:delPayableFeeDetail,
+ addApi:addPayableFeeDetail,
+ updateApi:updatePayableFeeDetail,
+ handleUpdateFunc:()=>{
+ crudRef.value.rowEdit(selectionList.value[0]);
+ },
+ handleSelectionChangeFunc:(selection:any)=>{
+ selectionList.value = selection;
+ }
+ })
+
+
+</script>
diff --git a/ui/admin-ui3/src/views/cwgl/receivableFeeDetail/index.vue b/ui/admin-ui3/src/views/cwgl/receivableFeeDetail/index.vue
new file mode 100644
index 0000000..9f60743
--- /dev/null
+++ b/ui/admin-ui3/src/views/cwgl/receivableFeeDetail/index.vue
@@ -0,0 +1,177 @@
+<template>
+ <basicContainer >
+ <avue-crud
+ :option="option"
+ :table-loading="pageF.loading"
+ :data="tableData"
+ :page="page"
+ :permission="permissionList"
+ :before-open="beforeOpen"
+ v-model="form"
+ ref="crudRef"
+ @row-update="rowUpdate"
+ @row-save="rowSave"
+ @refresh-change="refreshChange"
+ @row-del="rowDel"
+ @search-change="searchChange"
+ @search-reset="searchReset"
+ @selection-change="selectionChange"
+ @current-change="currentChange"
+ @size-change="sizeChange"
+ @on-load="onLoad"
+ >
+ <template #menu-left>
+ <el-button
+ type="success"
+ icon="Edit"
+ :disabled="pageF.single"
+ v-hasPermi="['cwgl:receivableFeeDetail:edit']"
+ @click="handleUpdate">淇敼
+ </el-button>
+ <el-button
+ type="danger"
+ icon="Delete"
+ :disabled="pageF.multiple"
+ @click="handleDelete"
+ v-hasPermi="['cwgl:receivableFeeDetail:remove']"
+ >鍒犻櫎
+ </el-button>
+ <el-button
+ type="warning"
+ plain
+ icon="Download"
+ @click="handleExport"
+ v-hasPermi="['cwgl:receivableFeeDetail:export']"
+ >瀵煎嚭
+ </el-button>
+ </template>
+ </avue-crud>
+ </basicContainer>
+</template>
+
+<script setup name="receivableFeeDetail" lang="ts">
+ import {ReceivableFeeDetailI,addReceivableFeeDetail, delReceivableFeeDetail, exportReceivableFeeDetail, getReceivableFeeDetail, listReceivableFeeDetail, updateReceivableFeeDetail} from "@/api/cwgl/receivableFeeDetail";
+ import useCurrentInstance from "@/utils/useCurrentInstance";
+ import {computed,reactive, ref, toRefs} from "vue";
+ import {PagesInterface, PageQueryInterface} from "@/utils/globalInterface";
+ import {usePagePlus} from "@/hooks/usePagePlus";
+ import {hasPermission} from "@/utils/permissionUtils";
+
+ const { proxy } = useCurrentInstance();
+ const crudRef = ref();
+
+ const permissionList = computed(()=>{
+ return {
+ addBtn: hasPermission(["cwgl:receivableFeeDetail:add"]),
+ delBtn: hasPermission(["cwgl:receivableFeeDetail:remove"]),
+ editBtn: hasPermission(["cwgl:receivableFeeDetail:edit"]),
+ viewBtn: hasPermission(["cwgl:receivableFeeDetail:query"]),
+ }
+ })
+
+ const data = reactive({
+ form:<ReceivableFeeDetailI>{},
+ queryParams:<ReceivableFeeDetailI&PageQueryInterface>{},
+ page: <PagesInterface>{
+ pageSize: 10,
+ total: 0,
+ currentPage: 1,
+ },
+ selectionList:[],
+ })
+ const {queryParams,form,page,selectionList} = toRefs(data);
+ const option = ref({
+ pageKey: 'ReceivableFeeDetail',
+ rowKey: 'id',
+ column: {
+ id: {
+ label: 'ID',
+ },
+ receivableFeeId: {
+ label: '搴旀敹璐圭敤绠$悊ID',
+ rules: [
+ {
+ required: true,
+ message: "搴旀敹璐圭敤绠$悊ID涓嶈兘涓虹┖", trigger: "blur" }
+ ], },
+ feeType: {
+ label: '璐圭敤绫诲瀷',
+ rules: [
+ {
+ required: true,
+ message: "璐圭敤绫诲瀷涓嶈兘涓虹┖", trigger: "change"
+ }
+ ], },
+ feeName: {
+ label: '璐圭敤鍚嶇О',
+ rules: [
+ {
+ required: true,
+ message: "璐圭敤鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }
+ ], },
+ billingUnit: {
+ label: '璁¤垂鍗曚綅',
+ },
+ unitPrice: {
+ label: '璁¤垂鍗曚环',
+ },
+ billingQuantity: {
+ label: '璁¤垂鏁伴噺',
+ },
+ billingAmount: {
+ label: '璁¤垂閲戦',
+ },
+ actualAmount: {
+ label: '瀹炴敹閲戦',
+ },
+ currency: {
+ label: '甯佸埗',
+ },
+ feeRegTime: {
+ label: '璐圭敤鐧昏鏃堕棿',
+ },
+ remark: {
+ label: '澶囨敞',
+ type: 'textarea', minRows: 3, maxRows: 5,
+ },
+ createBy: {
+ label: '鍒涘缓浜�',
+ },
+ createTime: {
+ label: '鍒涘缓鏃堕棿',
+ },
+ updateBy: {
+ label: '鏇存柊浜�',
+ },
+ updateTime: {
+ label: '鏇存柊鏃堕棿',
+ },
+ deleted: {
+ label: '鍒犻櫎鏍囪(0:姝e父;1:鍒犻櫎)',
+ },
+ }
+ })
+
+ const { tableData,pageF,rowSave,rowUpdate,rowDel,beforeOpen,searchChange,
+ searchReset,selectionChange,onLoad,currentChange,sizeChange,handleDelete,handleExport,handleUpdate,refreshChange} = usePagePlus({
+ form:form,
+ option:option,
+ queryParams:queryParams,
+ idKey:'id',
+ page:page.value,
+ getListApi:listReceivableFeeDetail,
+ getDetailApi:getReceivableFeeDetail,
+ exportApi:exportReceivableFeeDetail,
+ deleteApi:delReceivableFeeDetail,
+ addApi:addReceivableFeeDetail,
+ updateApi:updateReceivableFeeDetail,
+ handleUpdateFunc:()=>{
+ crudRef.value.rowEdit(selectionList.value[0]);
+ },
+ handleSelectionChangeFunc:(selection:any)=>{
+ selectionList.value = selection;
+ }
+ })
+
+
+</script>
--
Gitblit v1.8.0