From d1b3c20c7a17ec19c9597a774586b5fa5b30d8fd Mon Sep 17 00:00:00 2001
From: wujianwei <wjw@11.com>
Date: 星期二, 07 四月 2026 15:09:31 +0800
Subject: [PATCH] 添加账单审核日志

---
 tms/src/main/java/com/ruoyi/tms/domain/ReceivableAuditLog.java                  |   47 ++
 tms/src/main/resources/mapper/tms/PayableAuditLogMapper.xml                     |  113 +++++
 tms/src/main/java/com/ruoyi/tms/mapper/PayableAuditLogMapper.java               |   87 +++
 tms/src/main/java/com/ruoyi/tms/service/impl/TmsApBillServiceImpl.java          |   15 
 tms/src/main/java/com/ruoyi/tms/service/IPayableAuditLogService.java            |  102 ++++
 tms/src/main/java/com/ruoyi/tms/service/IReceivableAuditLogService.java         |  102 ++++
 tms/src/main/java/com/ruoyi/tms/controller/ReceivableAuditLogController.java    |  108 ++++
 tms/src/main/java/com/ruoyi/tms/domain/PayableAuditLog.java                     |   47 ++
 tms/src/main/java/com/ruoyi/tms/service/impl/PayableAuditLogServiceImpl.java    |  181 ++++++++
 tms/src/main/java/com/ruoyi/tms/service/impl/ReceivableAuditLogServiceImpl.java |  181 ++++++++
 tms/src/main/resources/mapper/tms/ReceivableAuditLogMapper.xml                  |  113 +++++
 tms/src/main/java/com/ruoyi/tms/mapper/ReceivableAuditLogMapper.java            |   87 +++
 tms/src/main/java/com/ruoyi/tms/controller/PayableAuditLogController.java       |  108 ++++
 tms/src/main/java/com/ruoyi/tms/service/impl/TmsArBillItemServiceImpl.java      |   16 
 14 files changed, 1,307 insertions(+), 0 deletions(-)

diff --git a/tms/src/main/java/com/ruoyi/tms/controller/PayableAuditLogController.java b/tms/src/main/java/com/ruoyi/tms/controller/PayableAuditLogController.java
new file mode 100644
index 0000000..0021631
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/controller/PayableAuditLogController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.tms.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.tms.domain.PayableAuditLog;
+import com.ruoyi.tms.service.IPayableAuditLogService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 搴斾粯璐﹀崟瀹℃牳鏃ュ織Controller
+ *
+ * @author ruoyi
+ * @date 2026-04-07
+ */
+@RestController
+@RequestMapping("/tms/payableAuditLog")
+public class PayableAuditLogController extends BaseController
+{
+    @Autowired
+    private IPayableAuditLogService payableAuditLogService;
+
+
+
+    /**
+     * 鏌ヨ搴斾粯璐﹀崟瀹℃牳鏃ュ織鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('tms:payableAuditLog:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(PayableAuditLog payableAuditLog)
+    {
+        startPage();
+        List<PayableAuditLog> list = payableAuditLogService.selectPayableAuditLogList(payableAuditLog);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭搴斾粯璐﹀崟瀹℃牳鏃ュ織鍒楄〃
+     * @param payableAuditLog 鏌ヨ鏉′欢瀵硅薄
+     */
+    @PreAuthorize("@ss.hasPermi('tms:payableAuditLog:export')")
+    @Log(title = "搴斾粯璐﹀崟瀹℃牳鏃ュ織", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(PayableAuditLog payableAuditLog,String exportKey)
+    {
+        payableAuditLogService.export(payableAuditLog,exportKey);
+        return AjaxResult.success("瀵煎嚭璇锋眰鎴愬姛锛岃绋嶅悗鐐瑰嚮涓嬭浇...!");
+    }
+
+
+
+    /**
+     * 鑾峰彇搴斾粯璐﹀崟瀹℃牳鏃ュ織璇︾粏淇℃伅
+     */
+    @PreAuthorize("@ss.hasPermi('tms:payableAuditLog:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Integer id)
+    {
+        return AjaxResult.success(payableAuditLogService.selectPayableAuditLogById(id));
+    }
+
+    /**
+     * 鏂板搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     */
+    @PreAuthorize("@ss.hasPermi('tms:payableAuditLog:add')")
+    @Log(title = "搴斾粯璐﹀崟瀹℃牳鏃ュ織", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody PayableAuditLog payableAuditLog)
+    {
+        return toAjax(payableAuditLogService.insertPayableAuditLog(payableAuditLog));
+    }
+
+    /**
+     * 淇敼搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     */
+    @PreAuthorize("@ss.hasPermi('tms:payableAuditLog:edit')")
+    @Log(title = "搴斾粯璐﹀崟瀹℃牳鏃ュ織", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody PayableAuditLog payableAuditLog)
+    {
+        return toAjax(payableAuditLogService.updatePayableAuditLog(payableAuditLog));
+    }
+
+    /**
+     * 鍒犻櫎搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     */
+    @PreAuthorize("@ss.hasPermi('tms:payableAuditLog:remove')")
+    @Log(title = "搴斾粯璐﹀崟瀹℃牳鏃ュ織", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Integer[] ids)
+    {
+        return toAjax(payableAuditLogService.deletePayableAuditLogByIds(ids));
+    }
+}
diff --git a/tms/src/main/java/com/ruoyi/tms/controller/ReceivableAuditLogController.java b/tms/src/main/java/com/ruoyi/tms/controller/ReceivableAuditLogController.java
new file mode 100644
index 0000000..74b7e26
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/controller/ReceivableAuditLogController.java
@@ -0,0 +1,108 @@
+package com.ruoyi.tms.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.tms.domain.ReceivableAuditLog;
+import com.ruoyi.tms.service.IReceivableAuditLogService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 搴旀敹璐﹀崟瀹℃牳鏃ュ織Controller
+ *
+ * @author ruoyi
+ * @date 2026-04-07
+ */
+@RestController
+@RequestMapping("/tms/receivableAuditLog")
+public class ReceivableAuditLogController extends BaseController
+{
+    @Autowired
+    private IReceivableAuditLogService receivableAuditLogService;
+
+
+
+    /**
+     * 鏌ヨ搴旀敹璐﹀崟瀹℃牳鏃ュ織鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('tms:receivableAuditLog:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(ReceivableAuditLog receivableAuditLog)
+    {
+        startPage();
+        List<ReceivableAuditLog> list = receivableAuditLogService.selectReceivableAuditLogList(receivableAuditLog);
+        return getDataTable(list);
+    }
+
+    /**
+     * 瀵煎嚭搴旀敹璐﹀崟瀹℃牳鏃ュ織鍒楄〃
+     * @param receivableAuditLog 鏌ヨ鏉′欢瀵硅薄
+     */
+    @PreAuthorize("@ss.hasPermi('tms:receivableAuditLog:export')")
+    @Log(title = "搴旀敹璐﹀崟瀹℃牳鏃ュ織", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(ReceivableAuditLog receivableAuditLog,String exportKey)
+    {
+        receivableAuditLogService.export(receivableAuditLog,exportKey);
+        return AjaxResult.success("瀵煎嚭璇锋眰鎴愬姛锛岃绋嶅悗鐐瑰嚮涓嬭浇...!");
+    }
+
+
+
+    /**
+     * 鑾峰彇搴旀敹璐﹀崟瀹℃牳鏃ュ織璇︾粏淇℃伅
+     */
+    @PreAuthorize("@ss.hasPermi('tms:receivableAuditLog:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Integer id)
+    {
+        return AjaxResult.success(receivableAuditLogService.selectReceivableAuditLogById(id));
+    }
+
+    /**
+     * 鏂板搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     */
+    @PreAuthorize("@ss.hasPermi('tms:receivableAuditLog:add')")
+    @Log(title = "搴旀敹璐﹀崟瀹℃牳鏃ュ織", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody ReceivableAuditLog receivableAuditLog)
+    {
+        return toAjax(receivableAuditLogService.insertReceivableAuditLog(receivableAuditLog));
+    }
+
+    /**
+     * 淇敼搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     */
+    @PreAuthorize("@ss.hasPermi('tms:receivableAuditLog:edit')")
+    @Log(title = "搴旀敹璐﹀崟瀹℃牳鏃ュ織", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody ReceivableAuditLog receivableAuditLog)
+    {
+        return toAjax(receivableAuditLogService.updateReceivableAuditLog(receivableAuditLog));
+    }
+
+    /**
+     * 鍒犻櫎搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     */
+    @PreAuthorize("@ss.hasPermi('tms:receivableAuditLog:remove')")
+    @Log(title = "搴旀敹璐﹀崟瀹℃牳鏃ュ織", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Integer[] ids)
+    {
+        return toAjax(receivableAuditLogService.deleteReceivableAuditLogByIds(ids));
+    }
+}
diff --git a/tms/src/main/java/com/ruoyi/tms/domain/PayableAuditLog.java b/tms/src/main/java/com/ruoyi/tms/domain/PayableAuditLog.java
new file mode 100644
index 0000000..ff215be
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/domain/PayableAuditLog.java
@@ -0,0 +1,47 @@
+package com.ruoyi.tms.domain;
+
+import com.ruoyi.common.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.util.Date;
+import lombok.Data;
+/**
+ * 搴斾粯璐﹀崟瀹℃牳鏃ュ織瀵硅薄 payable_audit_log
+ *
+ * @author ruoyi
+ * @date 2026-04-07
+ */
+@Data
+public class PayableAuditLog{
+
+
+    /** 涓婚敭 */
+        @TableField("id")
+    private Integer id;
+
+
+    /** 搴斾粯璐﹀崟id */
+    @Excel(name = "搴斾粯璐﹀崟id")
+
+        @TableField("head_id")
+    private Integer headId;
+
+
+    /** 鍒涘缓鑰� */
+        @TableField("create_by")
+    private String createBy;
+
+
+    /** 鍒涘缓鏃堕棿 */
+        @JsonFormat(pattern = "yyyy-MM-dd")
+        @TableField("create_time")
+    private Date createTime;
+
+
+    /** 鎿嶄綔璇存槑 */
+    @Excel(name = "鎿嶄綔璇存槑")
+
+        @TableField("operation")
+    private String operation;
+
+
+}
diff --git a/tms/src/main/java/com/ruoyi/tms/domain/ReceivableAuditLog.java b/tms/src/main/java/com/ruoyi/tms/domain/ReceivableAuditLog.java
new file mode 100644
index 0000000..1381e16
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/domain/ReceivableAuditLog.java
@@ -0,0 +1,47 @@
+package com.ruoyi.tms.domain;
+
+import com.ruoyi.common.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.util.Date;
+import lombok.Data;
+/**
+ * 搴旀敹璐﹀崟瀹℃牳鏃ュ織瀵硅薄 receivable_audit_log
+ *
+ * @author ruoyi
+ * @date 2026-04-07
+ */
+@Data
+public class ReceivableAuditLog{
+
+
+    /** 涓婚敭 */
+        @TableField("id")
+    private Integer id;
+
+
+    /** 搴旀敹璐﹀崟id */
+    @Excel(name = "搴旀敹璐﹀崟id")
+
+        @TableField("head_id")
+    private Integer headId;
+
+
+    /** 鍒涘缓鑰� */
+        @TableField("create_by")
+    private String createBy;
+
+
+    /** 鍒涘缓鏃堕棿 */
+        @JsonFormat(pattern = "yyyy-MM-dd")
+        @TableField("create_time")
+    private Date createTime;
+
+
+    /** 鎿嶄綔璇存槑 */
+    @Excel(name = "鎿嶄綔璇存槑")
+
+        @TableField("operation")
+    private String operation;
+
+
+}
diff --git a/tms/src/main/java/com/ruoyi/tms/mapper/PayableAuditLogMapper.java b/tms/src/main/java/com/ruoyi/tms/mapper/PayableAuditLogMapper.java
new file mode 100644
index 0000000..8a7047a
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/mapper/PayableAuditLogMapper.java
@@ -0,0 +1,87 @@
+package com.ruoyi.tms.mapper;
+
+import java.util.List;
+import com.ruoyi.tms.domain.PayableAuditLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+
+/**
+ * 搴斾粯璐﹀崟瀹℃牳鏃ュ織Mapper鎺ュ彛
+ * 
+ * @author ruoyi
+ * @date 2026-04-07
+ */
+public interface PayableAuditLogMapper  extends BaseMapper<PayableAuditLog>
+{
+    /**
+     * 鏌ヨ搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * 
+     * @param id 搴斾粯璐﹀崟瀹℃牳鏃ュ織ID
+     * @return 搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     */
+    public PayableAuditLog selectPayableAuditLogById(Integer id);
+
+    /**
+     * 鏌ヨ搴斾粯璐﹀崟瀹℃牳鏃ュ織 璁板綍鏁�
+     *
+     * @param payableAuditLog 搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * @return 搴斾粯璐﹀崟瀹℃牳鏃ュ織闆嗗悎
+     */
+    public int selectPayableAuditLogCount(PayableAuditLog payableAuditLog);
+
+    /**
+     * 鏌ヨ搴斾粯璐﹀崟瀹℃牳鏃ュ織鍒楄〃
+     * 
+     * @param payableAuditLog 搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * @return 搴斾粯璐﹀崟瀹℃牳鏃ュ織闆嗗悎
+     */
+    public List<PayableAuditLog> selectPayableAuditLogList(PayableAuditLog payableAuditLog);
+
+    /**
+     * 鏂板搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * 
+     * @param payableAuditLog 搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    public int insertPayableAuditLog(PayableAuditLog payableAuditLog);
+
+    /**
+     * 鏂板搴斾粯璐﹀崟瀹℃牳鏃ュ織[鎵归噺]
+     *
+     * @param payableAuditLogs 搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    public int insertPayableAuditLogBatch(List<PayableAuditLog> payableAuditLogs);
+
+    /**
+     * 淇敼搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * 
+     * @param payableAuditLog 搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    public int updatePayableAuditLog(PayableAuditLog payableAuditLog);
+
+    /**
+     * 淇敼搴斾粯璐﹀崟瀹℃牳鏃ュ織[鎵归噺]
+     *
+     * @param payableAuditLogs 搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    public int updatePayableAuditLogBatch(List<PayableAuditLog> payableAuditLogs);
+
+    /**
+     * 鍒犻櫎搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * 
+     * @param id 搴斾粯璐﹀崟瀹℃牳鏃ュ織ID
+     * @return 缁撴灉
+     */
+    public int deletePayableAuditLogById(Integer id);
+
+    /**
+     * 鎵归噺鍒犻櫎搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+     * @return 缁撴灉
+     */
+    public int deletePayableAuditLogByIds(Integer[] ids);
+}
diff --git a/tms/src/main/java/com/ruoyi/tms/mapper/ReceivableAuditLogMapper.java b/tms/src/main/java/com/ruoyi/tms/mapper/ReceivableAuditLogMapper.java
new file mode 100644
index 0000000..f092b2d
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/mapper/ReceivableAuditLogMapper.java
@@ -0,0 +1,87 @@
+package com.ruoyi.tms.mapper;
+
+import java.util.List;
+import com.ruoyi.tms.domain.ReceivableAuditLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+
+/**
+ * 搴旀敹璐﹀崟瀹℃牳鏃ュ織Mapper鎺ュ彛
+ * 
+ * @author ruoyi
+ * @date 2026-04-07
+ */
+public interface ReceivableAuditLogMapper  extends BaseMapper<ReceivableAuditLog>
+{
+    /**
+     * 鏌ヨ搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * 
+     * @param id 搴旀敹璐﹀崟瀹℃牳鏃ュ織ID
+     * @return 搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     */
+    public ReceivableAuditLog selectReceivableAuditLogById(Integer id);
+
+    /**
+     * 鏌ヨ搴旀敹璐﹀崟瀹℃牳鏃ュ織 璁板綍鏁�
+     *
+     * @param receivableAuditLog 搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * @return 搴旀敹璐﹀崟瀹℃牳鏃ュ織闆嗗悎
+     */
+    public int selectReceivableAuditLogCount(ReceivableAuditLog receivableAuditLog);
+
+    /**
+     * 鏌ヨ搴旀敹璐﹀崟瀹℃牳鏃ュ織鍒楄〃
+     * 
+     * @param receivableAuditLog 搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * @return 搴旀敹璐﹀崟瀹℃牳鏃ュ織闆嗗悎
+     */
+    public List<ReceivableAuditLog> selectReceivableAuditLogList(ReceivableAuditLog receivableAuditLog);
+
+    /**
+     * 鏂板搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * 
+     * @param receivableAuditLog 搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    public int insertReceivableAuditLog(ReceivableAuditLog receivableAuditLog);
+
+    /**
+     * 鏂板搴旀敹璐﹀崟瀹℃牳鏃ュ織[鎵归噺]
+     *
+     * @param receivableAuditLogs 搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    public int insertReceivableAuditLogBatch(List<ReceivableAuditLog> receivableAuditLogs);
+
+    /**
+     * 淇敼搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * 
+     * @param receivableAuditLog 搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    public int updateReceivableAuditLog(ReceivableAuditLog receivableAuditLog);
+
+    /**
+     * 淇敼搴旀敹璐﹀崟瀹℃牳鏃ュ織[鎵归噺]
+     *
+     * @param receivableAuditLogs 搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    public int updateReceivableAuditLogBatch(List<ReceivableAuditLog> receivableAuditLogs);
+
+    /**
+     * 鍒犻櫎搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * 
+     * @param id 搴旀敹璐﹀崟瀹℃牳鏃ュ織ID
+     * @return 缁撴灉
+     */
+    public int deleteReceivableAuditLogById(Integer id);
+
+    /**
+     * 鎵归噺鍒犻櫎搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+     * @return 缁撴灉
+     */
+    public int deleteReceivableAuditLogByIds(Integer[] ids);
+}
diff --git a/tms/src/main/java/com/ruoyi/tms/service/IPayableAuditLogService.java b/tms/src/main/java/com/ruoyi/tms/service/IPayableAuditLogService.java
new file mode 100644
index 0000000..d8bec94
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/service/IPayableAuditLogService.java
@@ -0,0 +1,102 @@
+package com.ruoyi.tms.service;
+
+import java.util.List;
+import com.ruoyi.tms.domain.PayableAuditLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+/**
+ * 搴斾粯璐﹀崟瀹℃牳鏃ュ織Service鎺ュ彛
+ * 
+ * @author ruoyi
+ * @date 2026-04-07
+ */
+public interface IPayableAuditLogService extends IService<PayableAuditLog>
+{
+    /**
+     * 鏌ヨ搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * 
+     * @param id 搴斾粯璐﹀崟瀹℃牳鏃ュ織ID
+     * @return 搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     */
+    public PayableAuditLog selectPayableAuditLogById(Integer id);
+
+    /**
+     * 鏌ヨ搴斾粯璐﹀崟瀹℃牳鏃ュ織 璁板綍鏁�
+     *
+     * @param payableAuditLog 搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * @return 搴斾粯璐﹀崟瀹℃牳鏃ュ織闆嗗悎
+     */
+    public int selectPayableAuditLogCount(PayableAuditLog payableAuditLog);
+
+    /**
+     * 鏌ヨ搴斾粯璐﹀崟瀹℃牳鏃ュ織鍒楄〃
+     * 
+     * @param payableAuditLog 搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * @return 搴斾粯璐﹀崟瀹℃牳鏃ュ織闆嗗悎
+     */
+    public List<PayableAuditLog> selectPayableAuditLogList(PayableAuditLog payableAuditLog);
+
+    /**
+     * 鏌ヨ搴斾粯璐﹀崟瀹℃牳鏃ュ織鍒楄〃 寮傛 瀵煎嚭
+     *
+     * @param payableAuditLog 搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * @param exportKey 瀵煎嚭鍔熻兘鐨勫敮涓�鏍囪瘑
+     * @return 搴斾粯璐﹀崟瀹℃牳鏃ュ織闆嗗悎
+     */
+    public void export(PayableAuditLog payableAuditLog, String exportKey) ;
+
+
+    /**
+     * 鏂板搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * 
+     * @param payableAuditLog 搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    public int insertPayableAuditLog(PayableAuditLog payableAuditLog);
+
+    /**
+     * 鏂板搴斾粯璐﹀崟瀹℃牳鏃ュ織[鎵归噺]
+     *
+     * @param payableAuditLogs 搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    public int insertPayableAuditLogBatch(List<PayableAuditLog> payableAuditLogs);
+
+    /**
+     * 淇敼搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * 
+     * @param payableAuditLog 搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    public int updatePayableAuditLog(PayableAuditLog payableAuditLog);
+
+    /**
+     * 淇敼搴斾粯璐﹀崟瀹℃牳鏃ュ織[鎵归噺]
+     *
+     * @param payableAuditLogs 搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    public int updatePayableAuditLogBatch(List<PayableAuditLog> payableAuditLogs);
+    /**
+     * 鎵归噺鍒犻櫎搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+     * @return 缁撴灉
+     */
+    public int deletePayableAuditLogByIds(String ids);
+
+    /**
+     * 鎵归噺鍒犻櫎搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+     * @return 缁撴灉
+     */
+    public int deletePayableAuditLogByIds(Integer[] ids);
+
+    /**
+     * 鍒犻櫎搴斾粯璐﹀崟瀹℃牳鏃ュ織淇℃伅
+     * 
+     * @param id 搴斾粯璐﹀崟瀹℃牳鏃ュ織ID
+     * @return 缁撴灉
+     */
+    public int deletePayableAuditLogById(Integer id);
+}
diff --git a/tms/src/main/java/com/ruoyi/tms/service/IReceivableAuditLogService.java b/tms/src/main/java/com/ruoyi/tms/service/IReceivableAuditLogService.java
new file mode 100644
index 0000000..a129a63
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/service/IReceivableAuditLogService.java
@@ -0,0 +1,102 @@
+package com.ruoyi.tms.service;
+
+import java.util.List;
+import com.ruoyi.tms.domain.ReceivableAuditLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+/**
+ * 搴旀敹璐﹀崟瀹℃牳鏃ュ織Service鎺ュ彛
+ * 
+ * @author ruoyi
+ * @date 2026-04-07
+ */
+public interface IReceivableAuditLogService extends IService<ReceivableAuditLog>
+{
+    /**
+     * 鏌ヨ搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * 
+     * @param id 搴旀敹璐﹀崟瀹℃牳鏃ュ織ID
+     * @return 搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     */
+    public ReceivableAuditLog selectReceivableAuditLogById(Integer id);
+
+    /**
+     * 鏌ヨ搴旀敹璐﹀崟瀹℃牳鏃ュ織 璁板綍鏁�
+     *
+     * @param receivableAuditLog 搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * @return 搴旀敹璐﹀崟瀹℃牳鏃ュ織闆嗗悎
+     */
+    public int selectReceivableAuditLogCount(ReceivableAuditLog receivableAuditLog);
+
+    /**
+     * 鏌ヨ搴旀敹璐﹀崟瀹℃牳鏃ュ織鍒楄〃
+     * 
+     * @param receivableAuditLog 搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * @return 搴旀敹璐﹀崟瀹℃牳鏃ュ織闆嗗悎
+     */
+    public List<ReceivableAuditLog> selectReceivableAuditLogList(ReceivableAuditLog receivableAuditLog);
+
+    /**
+     * 鏌ヨ搴旀敹璐﹀崟瀹℃牳鏃ュ織鍒楄〃 寮傛 瀵煎嚭
+     *
+     * @param receivableAuditLog 搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * @param exportKey 瀵煎嚭鍔熻兘鐨勫敮涓�鏍囪瘑
+     * @return 搴旀敹璐﹀崟瀹℃牳鏃ュ織闆嗗悎
+     */
+    public void export(ReceivableAuditLog receivableAuditLog, String exportKey) ;
+
+
+    /**
+     * 鏂板搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * 
+     * @param receivableAuditLog 搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    public int insertReceivableAuditLog(ReceivableAuditLog receivableAuditLog);
+
+    /**
+     * 鏂板搴旀敹璐﹀崟瀹℃牳鏃ュ織[鎵归噺]
+     *
+     * @param receivableAuditLogs 搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    public int insertReceivableAuditLogBatch(List<ReceivableAuditLog> receivableAuditLogs);
+
+    /**
+     * 淇敼搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * 
+     * @param receivableAuditLog 搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    public int updateReceivableAuditLog(ReceivableAuditLog receivableAuditLog);
+
+    /**
+     * 淇敼搴旀敹璐﹀崟瀹℃牳鏃ュ織[鎵归噺]
+     *
+     * @param receivableAuditLogs 搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    public int updateReceivableAuditLogBatch(List<ReceivableAuditLog> receivableAuditLogs);
+    /**
+     * 鎵归噺鍒犻櫎搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * 
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+     * @return 缁撴灉
+     */
+    public int deleteReceivableAuditLogByIds(String ids);
+
+    /**
+     * 鎵归噺鍒犻櫎搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+     * @return 缁撴灉
+     */
+    public int deleteReceivableAuditLogByIds(Integer[] ids);
+
+    /**
+     * 鍒犻櫎搴旀敹璐﹀崟瀹℃牳鏃ュ織淇℃伅
+     * 
+     * @param id 搴旀敹璐﹀崟瀹℃牳鏃ュ織ID
+     * @return 缁撴灉
+     */
+    public int deleteReceivableAuditLogById(Integer id);
+}
diff --git a/tms/src/main/java/com/ruoyi/tms/service/impl/PayableAuditLogServiceImpl.java b/tms/src/main/java/com/ruoyi/tms/service/impl/PayableAuditLogServiceImpl.java
new file mode 100644
index 0000000..c606476
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/service/impl/PayableAuditLogServiceImpl.java
@@ -0,0 +1,181 @@
+package com.ruoyi.tms.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.tms.mapper.PayableAuditLogMapper;
+import com.ruoyi.tms.domain.PayableAuditLog;
+import com.ruoyi.tms.service.IPayableAuditLogService;
+import com.ruoyi.common.core.text.Convert;
+
+/**
+ * 搴斾粯璐﹀崟瀹℃牳鏃ュ織Service涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2026-04-07
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class PayableAuditLogServiceImpl  extends BaseService<PayableAuditLogMapper, PayableAuditLog> implements IPayableAuditLogService
+{
+    protected final Logger logger = LoggerFactory.getLogger(getClass());
+    @Resource
+    private PayableAuditLogMapper payableAuditLogMapper;
+
+
+    /**
+     * 鏌ヨ搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     *
+     * @param id 搴斾粯璐﹀崟瀹℃牳鏃ュ織ID
+     * @return 搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     */
+    @DataSource(DataSourceType.SLAVE)
+    @Override
+    public PayableAuditLog selectPayableAuditLogById(Integer id)
+    {
+        return payableAuditLogMapper.selectPayableAuditLogById(id);
+    }
+
+    /**
+     * 鏌ヨ搴斾粯璐﹀崟瀹℃牳鏃ュ織 璁板綍鏁�
+     *
+     * @param payableAuditLog 搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * @return 搴斾粯璐﹀崟瀹℃牳鏃ュ織闆嗗悎
+     */
+    @DataSource(DataSourceType.SLAVE)
+    @Override
+    public int selectPayableAuditLogCount(PayableAuditLog payableAuditLog)
+    {
+        return payableAuditLogMapper.selectPayableAuditLogCount(payableAuditLog);
+    }
+
+    /**
+     * 鏌ヨ搴斾粯璐﹀崟瀹℃牳鏃ュ織鍒楄〃
+     *
+     * @param payableAuditLog 搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * @return 搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     */
+    @DataSource(DataSourceType.SLAVE)
+    @Override
+    public List<PayableAuditLog> selectPayableAuditLogList(PayableAuditLog payableAuditLog)
+    {
+        return payableAuditLogMapper.selectPayableAuditLogList(payableAuditLog);
+    }
+
+    /**
+     * 鏌ヨ搴斾粯璐﹀崟瀹℃牳鏃ュ織鍒楄〃 寮傛 瀵煎嚭
+     *
+     * @param payableAuditLog 搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * @param exportKey 瀵煎嚭鍔熻兘鐨勫敮涓�鏍囪瘑
+     * @return 搴斾粯璐﹀崟瀹℃牳鏃ュ織闆嗗悎
+     */
+    @DataSource(DataSourceType.SLAVE)
+    @Async
+    @Override
+    public void export(PayableAuditLog payableAuditLog,String exportKey) {
+
+        super.export(PayableAuditLog.class,exportKey,"payableAuditLogData",(pageNum)->{
+            PageUtils.startPage(pageNum, Constants.EXPORT_PATE_SIZE);
+            return selectPayableAuditLogList(payableAuditLog);
+        });
+    }
+
+
+    /**
+     * 鏂板搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     *
+     * @param payableAuditLog 搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertPayableAuditLog(PayableAuditLog payableAuditLog)
+    {
+        payableAuditLog.setCreateTime(DateUtils.getNowDate());
+        return payableAuditLogMapper.insertPayableAuditLog(payableAuditLog);
+    }
+
+    /**
+     * 鏂板搴斾粯璐﹀崟瀹℃牳鏃ュ織[鎵归噺]
+     *
+     * @param payableAuditLogs 搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertPayableAuditLogBatch(List<PayableAuditLog> payableAuditLogs)
+    {
+        int rows = payableAuditLogMapper.insertPayableAuditLogBatch(payableAuditLogs);
+        return rows;
+    }
+
+    /**
+     * 淇敼搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     *
+     * @param payableAuditLog 搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    @Override
+    public int updatePayableAuditLog(PayableAuditLog payableAuditLog)
+    {
+        return payableAuditLogMapper.updatePayableAuditLog(payableAuditLog);
+    }
+
+    /**
+     * 淇敼搴斾粯璐﹀崟瀹℃牳鏃ュ織[鎵归噺]
+     *
+     * @param payableAuditLogs 搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    @Override
+    public int updatePayableAuditLogBatch(List<PayableAuditLog> payableAuditLogs){
+        return payableAuditLogMapper.updatePayableAuditLogBatch(payableAuditLogs);
+    }
+
+    /**
+     * 鍒犻櫎搴斾粯璐﹀崟瀹℃牳鏃ュ織瀵硅薄
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+     * @return 缁撴灉
+     */
+    @Override
+    public int deletePayableAuditLogByIds(String ids)
+    {
+        return deletePayableAuditLogByIds(Convert.toIntArray(ids));
+    }
+
+    /**
+     * 鍒犻櫎搴斾粯璐﹀崟瀹℃牳鏃ュ織瀵硅薄
+     *
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+     * @return 缁撴灉
+     */
+    @Override
+    public int deletePayableAuditLogByIds(Integer[] ids)
+    {
+        return payableAuditLogMapper.deletePayableAuditLogByIds(ids);
+    }
+
+    /**
+     * 鍒犻櫎搴斾粯璐﹀崟瀹℃牳鏃ュ織淇℃伅
+     *
+     * @param id 搴斾粯璐﹀崟瀹℃牳鏃ュ織ID
+     * @return 缁撴灉
+     */
+    @Override
+    public int deletePayableAuditLogById(Integer id)
+    {
+        return payableAuditLogMapper.deletePayableAuditLogById(id);
+    }
+}
diff --git a/tms/src/main/java/com/ruoyi/tms/service/impl/ReceivableAuditLogServiceImpl.java b/tms/src/main/java/com/ruoyi/tms/service/impl/ReceivableAuditLogServiceImpl.java
new file mode 100644
index 0000000..8a41018
--- /dev/null
+++ b/tms/src/main/java/com/ruoyi/tms/service/impl/ReceivableAuditLogServiceImpl.java
@@ -0,0 +1,181 @@
+package com.ruoyi.tms.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.tms.mapper.ReceivableAuditLogMapper;
+import com.ruoyi.tms.domain.ReceivableAuditLog;
+import com.ruoyi.tms.service.IReceivableAuditLogService;
+import com.ruoyi.common.core.text.Convert;
+
+/**
+ * 搴旀敹璐﹀崟瀹℃牳鏃ュ織Service涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2026-04-07
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class ReceivableAuditLogServiceImpl  extends BaseService<ReceivableAuditLogMapper, ReceivableAuditLog> implements IReceivableAuditLogService
+{
+    protected final Logger logger = LoggerFactory.getLogger(getClass());
+    @Resource
+    private ReceivableAuditLogMapper receivableAuditLogMapper;
+
+
+    /**
+     * 鏌ヨ搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     *
+     * @param id 搴旀敹璐﹀崟瀹℃牳鏃ュ織ID
+     * @return 搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     */
+    @DataSource(DataSourceType.SLAVE)
+    @Override
+    public ReceivableAuditLog selectReceivableAuditLogById(Integer id)
+    {
+        return receivableAuditLogMapper.selectReceivableAuditLogById(id);
+    }
+
+    /**
+     * 鏌ヨ搴旀敹璐﹀崟瀹℃牳鏃ュ織 璁板綍鏁�
+     *
+     * @param receivableAuditLog 搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * @return 搴旀敹璐﹀崟瀹℃牳鏃ュ織闆嗗悎
+     */
+    @DataSource(DataSourceType.SLAVE)
+    @Override
+    public int selectReceivableAuditLogCount(ReceivableAuditLog receivableAuditLog)
+    {
+        return receivableAuditLogMapper.selectReceivableAuditLogCount(receivableAuditLog);
+    }
+
+    /**
+     * 鏌ヨ搴旀敹璐﹀崟瀹℃牳鏃ュ織鍒楄〃
+     *
+     * @param receivableAuditLog 搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * @return 搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     */
+    @DataSource(DataSourceType.SLAVE)
+    @Override
+    public List<ReceivableAuditLog> selectReceivableAuditLogList(ReceivableAuditLog receivableAuditLog)
+    {
+        return receivableAuditLogMapper.selectReceivableAuditLogList(receivableAuditLog);
+    }
+
+    /**
+     * 鏌ヨ搴旀敹璐﹀崟瀹℃牳鏃ュ織鍒楄〃 寮傛 瀵煎嚭
+     *
+     * @param receivableAuditLog 搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * @param exportKey 瀵煎嚭鍔熻兘鐨勫敮涓�鏍囪瘑
+     * @return 搴旀敹璐﹀崟瀹℃牳鏃ュ織闆嗗悎
+     */
+    @DataSource(DataSourceType.SLAVE)
+    @Async
+    @Override
+    public void export(ReceivableAuditLog receivableAuditLog,String exportKey) {
+
+        super.export(ReceivableAuditLog.class,exportKey,"receivableAuditLogData",(pageNum)->{
+            PageUtils.startPage(pageNum, Constants.EXPORT_PATE_SIZE);
+            return selectReceivableAuditLogList(receivableAuditLog);
+        });
+    }
+
+
+    /**
+     * 鏂板搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     *
+     * @param receivableAuditLog 搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertReceivableAuditLog(ReceivableAuditLog receivableAuditLog)
+    {
+        receivableAuditLog.setCreateTime(DateUtils.getNowDate());
+        return receivableAuditLogMapper.insertReceivableAuditLog(receivableAuditLog);
+    }
+
+    /**
+     * 鏂板搴旀敹璐﹀崟瀹℃牳鏃ュ織[鎵归噺]
+     *
+     * @param receivableAuditLogs 搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertReceivableAuditLogBatch(List<ReceivableAuditLog> receivableAuditLogs)
+    {
+        int rows = receivableAuditLogMapper.insertReceivableAuditLogBatch(receivableAuditLogs);
+        return rows;
+    }
+
+    /**
+     * 淇敼搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     *
+     * @param receivableAuditLog 搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateReceivableAuditLog(ReceivableAuditLog receivableAuditLog)
+    {
+        return receivableAuditLogMapper.updateReceivableAuditLog(receivableAuditLog);
+    }
+
+    /**
+     * 淇敼搴旀敹璐﹀崟瀹℃牳鏃ュ織[鎵归噺]
+     *
+     * @param receivableAuditLogs 搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateReceivableAuditLogBatch(List<ReceivableAuditLog> receivableAuditLogs){
+        return receivableAuditLogMapper.updateReceivableAuditLogBatch(receivableAuditLogs);
+    }
+
+    /**
+     * 鍒犻櫎搴旀敹璐﹀崟瀹℃牳鏃ュ織瀵硅薄
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteReceivableAuditLogByIds(String ids)
+    {
+        return deleteReceivableAuditLogByIds(Convert.toIntArray(ids));
+    }
+
+    /**
+     * 鍒犻櫎搴旀敹璐﹀崟瀹℃牳鏃ュ織瀵硅薄
+     *
+     *
+     * @param ids 闇�瑕佸垹闄ょ殑鏁版嵁ID
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteReceivableAuditLogByIds(Integer[] ids)
+    {
+        return receivableAuditLogMapper.deleteReceivableAuditLogByIds(ids);
+    }
+
+    /**
+     * 鍒犻櫎搴旀敹璐﹀崟瀹℃牳鏃ュ織淇℃伅
+     *
+     * @param id 搴旀敹璐﹀崟瀹℃牳鏃ュ織ID
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteReceivableAuditLogById(Integer id)
+    {
+        return receivableAuditLogMapper.deleteReceivableAuditLogById(id);
+    }
+}
diff --git a/tms/src/main/java/com/ruoyi/tms/service/impl/TmsApBillServiceImpl.java b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsApBillServiceImpl.java
index 5c97285..b871b0e 100644
--- a/tms/src/main/java/com/ruoyi/tms/service/impl/TmsApBillServiceImpl.java
+++ b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsApBillServiceImpl.java
@@ -38,6 +38,8 @@
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.client.RestTemplate;
 import com.alibaba.fastjson2.JSON;
+import com.ruoyi.tms.domain.PayableAuditLog;
+import com.ruoyi.tms.service.IPayableAuditLogService;
 
 /**
  * 搴斾粯璐﹀崟Service涓氬姟灞傚鐞�
@@ -64,6 +66,9 @@
 
     @Autowired
     private RestTemplate restTemplate;
+
+    @Autowired
+    private IPayableAuditLogService payableAuditLogService;
 
     @Value("${custom.cwxtApi.url}")
     private String url;
@@ -265,6 +270,16 @@
     }
 
     /**
+     * 娣诲姞搴斾粯璐﹀崟瀹℃牳鏃ュ織
+     *
+     * @param auditLog 瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    public int addApBillAuditLog(PayableAuditLog auditLog) {
+        return payableAuditLogService.insertPayableAuditLog(auditLog);
+    }
+
+    /**
      * 鍚戝閮ㄧ郴缁熸帹閫佸簲浠樻暟鎹�
      * @param tmsApBill 搴斾粯璐﹀崟
      * @param tmsPayableFeeList 搴斾粯璐圭敤鍒楄〃
diff --git a/tms/src/main/java/com/ruoyi/tms/service/impl/TmsArBillItemServiceImpl.java b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsArBillItemServiceImpl.java
index eca3cf5..7e7578f 100644
--- a/tms/src/main/java/com/ruoyi/tms/service/impl/TmsArBillItemServiceImpl.java
+++ b/tms/src/main/java/com/ruoyi/tms/service/impl/TmsArBillItemServiceImpl.java
@@ -19,6 +19,9 @@
 import com.ruoyi.tms.domain.TmsArBillItem;
 import com.ruoyi.tms.service.ITmsArBillItemService;
 import com.ruoyi.common.core.text.Convert;
+import com.ruoyi.tms.domain.ReceivableAuditLog;
+import com.ruoyi.tms.service.IReceivableAuditLogService;
+import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  * 搴旀敹璐﹀崟鏄庣粏Service涓氬姟灞傚鐞�
@@ -33,6 +36,9 @@
     protected final Logger logger = LoggerFactory.getLogger(getClass());
     @Resource
     private TmsArBillItemMapper tmsArBillItemMapper;
+
+    @Autowired
+    private IReceivableAuditLogService receivableAuditLogService;
 
 
     /**
@@ -178,4 +184,14 @@
     {
         return tmsArBillItemMapper.deleteTmsArBillItemById(id);
     }
+
+    /**
+     * 娣诲姞搴旀敹璐﹀崟瀹℃牳鏃ュ織
+     *
+     * @param auditLog 瀹℃牳鏃ュ織
+     * @return 缁撴灉
+     */
+    public int addArBillAuditLog(ReceivableAuditLog auditLog) {
+        return receivableAuditLogService.insertReceivableAuditLog(auditLog);
+    }
 }
diff --git a/tms/src/main/resources/mapper/tms/PayableAuditLogMapper.xml b/tms/src/main/resources/mapper/tms/PayableAuditLogMapper.xml
new file mode 100644
index 0000000..86c3f34
--- /dev/null
+++ b/tms/src/main/resources/mapper/tms/PayableAuditLogMapper.xml
@@ -0,0 +1,113 @@
+<?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.tms.mapper.PayableAuditLogMapper">
+
+    <resultMap type="com.ruoyi.tms.domain.PayableAuditLog" id="PayableAuditLogResult">
+        <result property="id"    column="id"    />
+        <result property="headId"    column="head_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="operation"    column="operation"    />
+    </resultMap>
+
+    <sql id="selectPayableAuditLogVo">
+        select thisTab.id, thisTab.head_id, thisTab.create_by, thisTab.create_time, thisTab.operation from payable_audit_log AS thisTab
+    </sql>
+    <sql id="selectPayableAuditLogVoCount">
+        select count(0) from payable_audit_log as thisTab
+    </sql>
+
+    <sql id="whereCondition">
+        <if test="headId != null "> and thisTab.head_id = #{headId}</if>
+        <if test="operation != null  and operation != ''"> and thisTab.operation = #{operation}</if>
+    </sql>
+
+    <!--鏌ヨ-->
+    <select id="selectPayableAuditLogById" parameterType="Integer" resultMap="PayableAuditLogResult">
+        <include refid="selectPayableAuditLogVo"/>
+        where id = #{id}
+    </select>
+
+    <select id="selectPayableAuditLogCount" parameterType="com.ruoyi.tms.domain.PayableAuditLog" resultType="int">
+        <include refid="selectPayableAuditLogVoCount"/>
+        <where>
+            <include refid="whereCondition"/>
+        </where>
+    </select>
+
+    <select id="selectPayableAuditLogList" parameterType="com.ruoyi.tms.domain.PayableAuditLog" resultMap="PayableAuditLogResult">
+        <include refid="selectPayableAuditLogVo"/>
+        <where>
+            <include refid="whereCondition"/>
+        </where>
+        order by thisTab.id desc
+    </select>
+
+    <!-- 鏂板 -->
+    <insert id="insertPayableAuditLog" parameterType="com.ruoyi.tms.domain.PayableAuditLog"  useGeneratedKeys="true" keyProperty="id">
+        insert into payable_audit_log
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="headId != null">head_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="operation != null">operation,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="headId != null">#{headId},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="operation != null">#{operation},</if>
+         </trim>
+    </insert>
+
+    <insert id="insertPayableAuditLogBatch" parameterType="java.util.List"  useGeneratedKeys="true" keyProperty="id">
+        insert into payable_audit_log
+        <trim prefix="(" suffix=") values" suffixOverrides=",">
+            id,head_id,create_by,create_time,operation,
+        </trim>
+        <foreach item="item" index="index" collection="list" separator=",">
+            <trim prefix="(" suffix=") " suffixOverrides=",">
+                #{item.id},#{item.headId},#{item.createBy},#{item.createTime},#{item.operation},
+            </trim>
+        </foreach>
+    </insert>
+
+    <!-- 淇敼 -->
+    <update id="updatePayableAuditLog" parameterType="com.ruoyi.tms.domain.PayableAuditLog">
+        update payable_audit_log
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="headId != null">head_id = #{headId},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="operation != null">operation = #{operation},</if>
+        </trim>
+        where id = #{id}
+    </update>
+    <!-- 淇敼 -->
+    <update id="updatePayableAuditLogBatch" parameterType="java.util.List">
+        <foreach collection="list" item="item" index="index" separator=";">
+            update payable_audit_log
+            <trim prefix="SET" suffixOverrides=",">
+                <if test="item.headId != null">head_id = #{item.headId},</if>
+                <if test="item.createBy != null">create_by = #{item.createBy},</if>
+                <if test="item.createTime != null">create_time = #{item.createTime},</if>
+                <if test="item.operation != null">operation = #{item.operation},</if>
+            </trim>
+        where id = #{item.id}
+        </foreach>
+    </update>
+
+    <!--鍒犻櫎-->
+    <delete id="deletePayableAuditLogById" parameterType="Integer">
+        delete from payable_audit_log where id = #{id}
+    </delete>
+    <delete id="deletePayableAuditLogByIds" parameterType="Integer">
+        delete from payable_audit_log where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+</mapper>
\ No newline at end of file
diff --git a/tms/src/main/resources/mapper/tms/ReceivableAuditLogMapper.xml b/tms/src/main/resources/mapper/tms/ReceivableAuditLogMapper.xml
new file mode 100644
index 0000000..a38c9fe
--- /dev/null
+++ b/tms/src/main/resources/mapper/tms/ReceivableAuditLogMapper.xml
@@ -0,0 +1,113 @@
+<?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.tms.mapper.ReceivableAuditLogMapper">
+
+    <resultMap type="com.ruoyi.tms.domain.ReceivableAuditLog" id="ReceivableAuditLogResult">
+        <result property="id"    column="id"    />
+        <result property="headId"    column="head_id"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="operation"    column="operation"    />
+    </resultMap>
+
+    <sql id="selectReceivableAuditLogVo">
+        select thisTab.id, thisTab.head_id, thisTab.create_by, thisTab.create_time, thisTab.operation from receivable_audit_log AS thisTab
+    </sql>
+    <sql id="selectReceivableAuditLogVoCount">
+        select count(0) from receivable_audit_log as thisTab
+    </sql>
+
+    <sql id="whereCondition">
+        <if test="headId != null "> and thisTab.head_id = #{headId}</if>
+        <if test="operation != null  and operation != ''"> and thisTab.operation = #{operation}</if>
+    </sql>
+
+    <!--鏌ヨ-->
+    <select id="selectReceivableAuditLogById" parameterType="Integer" resultMap="ReceivableAuditLogResult">
+        <include refid="selectReceivableAuditLogVo"/>
+        where id = #{id}
+    </select>
+
+    <select id="selectReceivableAuditLogCount" parameterType="com.ruoyi.tms.domain.ReceivableAuditLog" resultType="int">
+        <include refid="selectReceivableAuditLogVoCount"/>
+        <where>
+            <include refid="whereCondition"/>
+        </where>
+    </select>
+
+    <select id="selectReceivableAuditLogList" parameterType="com.ruoyi.tms.domain.ReceivableAuditLog" resultMap="ReceivableAuditLogResult">
+        <include refid="selectReceivableAuditLogVo"/>
+        <where>
+            <include refid="whereCondition"/>
+        </where>
+        order by thisTab.id desc
+    </select>
+
+    <!-- 鏂板 -->
+    <insert id="insertReceivableAuditLog" parameterType="com.ruoyi.tms.domain.ReceivableAuditLog"  useGeneratedKeys="true" keyProperty="id">
+        insert into receivable_audit_log
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="headId != null">head_id,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="operation != null">operation,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="headId != null">#{headId},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="operation != null">#{operation},</if>
+         </trim>
+    </insert>
+
+    <insert id="insertReceivableAuditLogBatch" parameterType="java.util.List"  useGeneratedKeys="true" keyProperty="id">
+        insert into receivable_audit_log
+        <trim prefix="(" suffix=") values" suffixOverrides=",">
+            id,head_id,create_by,create_time,operation,
+        </trim>
+        <foreach item="item" index="index" collection="list" separator=",">
+            <trim prefix="(" suffix=") " suffixOverrides=",">
+                #{item.id},#{item.headId},#{item.createBy},#{item.createTime},#{item.operation},
+            </trim>
+        </foreach>
+    </insert>
+
+    <!-- 淇敼 -->
+    <update id="updateReceivableAuditLog" parameterType="com.ruoyi.tms.domain.ReceivableAuditLog">
+        update receivable_audit_log
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="headId != null">head_id = #{headId},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="operation != null">operation = #{operation},</if>
+        </trim>
+        where id = #{id}
+    </update>
+    <!-- 淇敼 -->
+    <update id="updateReceivableAuditLogBatch" parameterType="java.util.List">
+        <foreach collection="list" item="item" index="index" separator=";">
+            update receivable_audit_log
+            <trim prefix="SET" suffixOverrides=",">
+                <if test="item.headId != null">head_id = #{item.headId},</if>
+                <if test="item.createBy != null">create_by = #{item.createBy},</if>
+                <if test="item.createTime != null">create_time = #{item.createTime},</if>
+                <if test="item.operation != null">operation = #{item.operation},</if>
+            </trim>
+        where id = #{item.id}
+        </foreach>
+    </update>
+
+    <!--鍒犻櫎-->
+    <delete id="deleteReceivableAuditLogById" parameterType="Integer">
+        delete from receivable_audit_log where id = #{id}
+    </delete>
+    <delete id="deleteReceivableAuditLogByIds" parameterType="Integer">
+        delete from receivable_audit_log where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+</mapper>
\ No newline at end of file

--
Gitblit v1.8.0