Răsfoiți Sursa

客户收款

fubin 2 ani în urmă
părinte
comite
0b0a7ea28a

+ 6 - 7
src/main/java/com/dk/mdm/controller/t_mst/MoneyAccountItemController.java → src/main/java/com/dk/mdm/controller/mst/MoneyAccountItemController.java

@@ -1,18 +1,17 @@
-package com.dk.mdm.controller.t_mst;
+package com.dk.mdm.controller.mst;
 
-import com.dk.mdm.model.pojo.t_mst.MoneyAccountItem;
-import com.dk.common.controller.BaseController;
 import com.dk.common.service.BaseService;
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.dk.mdm.model.pojo.mst.MoneyAccountItem;
+import com.dk.mdm.service.mst.MoneyAccountItemService;
+import io.swagger.annotations.Api;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
-import io.swagger.annotations.Api;
-import com.dk.mdm.service.t_mst.MoneyAccountItemService;
 
 @Api(tags = "资金流水明细API接口")
 @RestController
 @RequestMapping("/moneyAccountItem")
-public class MoneyAccountItemController{
+public class MoneyAccountItemController {
 
     public BaseService<MoneyAccountItem> getService() {
         return moneyAccountItemService;

+ 10 - 1
src/main/java/com/dk/mdm/mapper/mac/AccountItemMapper.java

@@ -2,13 +2,22 @@ package com.dk.mdm.mapper.mac;
 
 import com.dk.mdm.model.pojo.mac.AccountItem;
 import com.dk.common.mapper.BaseMapper;
+import com.dk.mdm.model.pojo.mac.RecPayItem;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+import java.util.Map;
+
 /**
 *  账务明细 Mapper
 */
 @Repository
 public interface AccountItemMapper extends BaseMapper<AccountItem>{
-	
+    /**
+     * @desc   : 查询收款总额
+     * @author : 付斌
+     * @date   : 2024-03-09 11:36
+     */
+    Map<String, Object> getSumAmtRec(String id);
 }
 

+ 8 - 0
src/main/java/com/dk/mdm/mapper/mac/AccountItemMapper.xml

@@ -234,4 +234,12 @@
             )
         </foreach>
     </insert>
+
+    <!-- 查询收款总额 -->
+    <select id="getSumAmtRec" resultType="java.util.Map">
+        SELECT sum(tmai.amt_rec) as sumAmtRec
+        FROM dkic_b.t_mac_account_item as tmai
+        where tmai.flg_valid
+          and tmai.object_id = #{id}::uuid
+    </select>
 </mapper>

+ 8 - 0
src/main/java/com/dk/mdm/mapper/mac/RecPayItemMapper.java

@@ -2,6 +2,7 @@ package com.dk.mdm.mapper.mac;
 
 import com.dk.mdm.model.pojo.mac.RecPayItem;
 import com.dk.common.mapper.BaseMapper;
+import com.dk.mdm.model.pojo.sale.OutReturnItem;
 import com.dk.mdm.model.query.mac.RecPayItemQuery;
 import com.dk.mdm.model.response.mac.RecPayItemResponse;
 import org.springframework.stereotype.Repository;
@@ -19,5 +20,12 @@ public interface RecPayItemMapper extends BaseMapper<RecPayItem>{
      * @date   : 2024-03-19 16:13
      */
     List<RecPayItemResponse> selectByCond(RecPayItemQuery recPayItemQuery);
+
+    /**
+     * @desc   : 根据主表主键锁定表t_psi_order_item的多行数据
+     * @author : 付斌
+     * @date   : 2024-03-09 11:36
+     */
+    List<RecPayItem> selectByZIdForUpdate(String id);
 }
 

+ 9 - 0
src/main/java/com/dk/mdm/mapper/mac/RecPayItemMapper.xml

@@ -182,6 +182,15 @@
         </foreach>
     </insert>
 
+    <!-- 根据主键锁定表t_psi_out_return_item的多行数据 -->
+    <select id="selectByZIdForUpdate" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM dkic_b.t_psi_order_item
+        WHERE rp_id = #{id}::uuid
+        for update
+    </select>
+
     <delete id="deleteById">
         DELETE FROM dkic_b.t_psi_order_item
         WHERE item_id = #{id}::UUID;

+ 29 - 0
src/main/java/com/dk/mdm/mapper/mst/MoneyAccountItemMapper.java

@@ -0,0 +1,29 @@
+package com.dk.mdm.mapper.mst;
+
+import com.dk.common.mapper.BaseMapper;
+import com.dk.mdm.model.pojo.mst.MoneyAccountItem;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.Map;
+
+/**
+*  资金流水明细 Mapper
+*/
+@Repository
+public interface MoneyAccountItemMapper extends BaseMapper<MoneyAccountItem>{
+    /**
+     * @desc   : 根据来源ID删除资金流水
+     * @author : 付斌
+     * @date   : 2024-03-22 10:30
+     */
+    int deleteByInvoiceId(@Param("id") String id);
+
+    /**
+     * @desc   : 查询收款总额
+     * @author : 付斌
+     * @date   : 2024-03-09 11:36
+     */
+    Map<String, Object> getSumAmtInflow(String id);
+}
+

+ 15 - 2
src/main/java/com/dk/mdm/mapper/t_mst/MoneyAccountItemMapper.xml → src/main/java/com/dk/mdm/mapper/mst/MoneyAccountItemMapper.xml

@@ -1,6 +1,6 @@
 <?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.dk.mdm.mapper.t_mst.MoneyAccountItemMapper">
+<mapper namespace="com.dk.mdm.mapper.mst.MoneyAccountItemMapper">
 
     <!-- 通用设置 -->
     <!-- 通用查询列 -->
@@ -9,7 +9,7 @@
     </sql>
 
     <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.dk.mdm.model.pojo.t_mst.MoneyAccountItem">
+    <resultMap id="BaseResultMap" type="com.dk.mdm.model.pojo.mst.MoneyAccountItem">
         <id column="item_id" property="itemId"/>
                 <result column="mac_id" property="macId" typeHandler="UuidTypeHandler"/>
                 <result column="flow_type" property="flowType"/>
@@ -174,4 +174,17 @@
             )
         </foreach>
     </insert>
+
+    <delete id="deleteByInvoiceId">
+        DELETE FROM dkic_b.t_mst_money_account_item
+        WHERE invoice_id = #{id}::uuid;
+    </delete>
+
+    <!-- 查询收款总额 -->
+    <select id="getSumAmtInflow" resultType="java.util.Map">
+        SELECT sum(tmmai.amt_inflow) as sumAmtInflow
+        FROM dkic_b.t_mst_money_account_item as tmmai
+        where tmmai.flg_valid
+          and tmmai.mac_id = #{id}::uuid
+    </select>
 </mapper>

+ 9 - 0
src/main/java/com/dk/mdm/mapper/mst/MoneyAccountMapper.xml

@@ -183,4 +183,13 @@
         SELECT MAX(display_no) + 1  FROM dkic_b.t_mst_money_account ma
          WHERE ma.cp_id = #{cpId}
     </select>
+
+    <!-- 根据主键锁定表t_mst_money_account的一行数据 -->
+    <select id="selectByIdForUpdate" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM t_mst_money_account
+        WHERE mac_id = #{id}::uuid
+        for update
+    </select>
 </mapper>

+ 0 - 14
src/main/java/com/dk/mdm/mapper/t_mst/MoneyAccountItemMapper.java

@@ -1,14 +0,0 @@
-package com.dk.mdm.mapper.t_mst;
-
-import com.dk.mdm.model.pojo.t_mst.MoneyAccountItem;
-import com.dk.common.mapper.BaseMapper;
-import org.springframework.stereotype.Repository;
-
-/**
-*  资金流水明细 Mapper
-*/
-@Repository
-public interface MoneyAccountItemMapper extends BaseMapper<MoneyAccountItem>{
-	
-}
-

+ 8 - 10
src/main/java/com/dk/mdm/model/pojo/t_mst/MoneyAccountItem.java → src/main/java/com/dk/mdm/model/pojo/mst/MoneyAccountItem.java

@@ -1,25 +1,23 @@
-package com.dk.mdm.model.pojo.t_mst;
+package com.dk.mdm.model.pojo.mst;
 
 import cn.afterturn.easypoi.excel.annotation.Excel;
 import com.baomidou.mybatisplus.annotation.*;
-import java.io.Serializable;
-
 import com.dk.common.infrastructure.annotaiton.ExportTitle;
-import com.dk.common.infrastructure.handler.*;
+import com.dk.common.infrastructure.handler.TimestampTypeHandler;
+import com.dk.common.infrastructure.handler.UuidTypeHandler;
 import com.dk.common.model.pojo.PageInfo;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
-import lombok.NoArgsConstructor;
+import lombok.Data;
 import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import com.alibaba.fastjson.JSONObject;
 
+import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDate;
-import java.util.List;
 import java.time.LocalDateTime;
 
 /**

+ 0 - 3
src/main/java/com/dk/mdm/model/vo/mac/RecPayVO.java

@@ -287,9 +287,6 @@ public class RecPayVO extends PageInfo<RecPayVO> implements Serializable {
     @ApiModelProperty(value = "明细")
     private List<RecPayItemVO> itemList;
 
-    @ApiModelProperty(value = "删除明细")
-    private List<RecPayItemVO> deleteItemList;
-
     /*
      * 相关属性
      * @TableField(exist = false)

+ 72 - 10
src/main/java/com/dk/mdm/service/mac/AccountService.java

@@ -1,28 +1,90 @@
 package com.dk.mdm.service.mac;
 
+import com.dk.common.exception.BaseBusinessException;
+import com.dk.common.infrastructure.enums.ErrorCodeEnum;
+import com.dk.common.response.ResponseCodeEnum;
+import com.dk.mdm.mapper.mac.AccountItemMapper;
+import com.dk.mdm.mapper.mst.MoneyAccountItemMapper;
 import com.dk.mdm.model.pojo.mac.Account;
 import com.dk.mdm.mapper.mac.AccountMapper;
 import com.dk.common.service.BaseService;
 import com.dk.common.mapper.BaseMapper;
+import com.dk.mdm.model.pojo.mst.MoneyAccount;
+import com.dk.mdm.service.mst.MoneyAccountService;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
+import java.util.Map;
+
 @Service
 @Transactional
 public class AccountService extends BaseService<Account> {
 
-	@Override
-	public String getPrimaryKey() {
-		return "object_id";
-	}
+    @Override
+    public String getPrimaryKey() {
+        return "object_id";
+    }
+
+    @Override
+    public BaseMapper<Account> getRepository() {
+        return accountMapper;
+    }
+
+    @Autowired
+    private AccountMapper accountMapper;
+
+    @Autowired
+    private AccountItemMapper accountItemMapper;
+
+    @Autowired
+    private MoneyAccountService moneyAccountService;
+
+    @Autowired
+    private MoneyAccountItemMapper moneyAccountItemMapper;
+
+    /**
+     * @desc : 更新总帐上收款类字段
+     * @author : 付斌
+     * @date : 2024-03-22 11:08
+     */
+    public void updateReceipt(String objectId) {
+        Account accountForUpdate = accountMapper.selectByIdForUpdate(objectId);
+        Map<String, Object> mapSumAmtRec = accountItemMapper.getSumAmtRec(objectId);
+        BigDecimal sumAmtRec = new BigDecimal(mapSumAmtRec.get("sumAmtRec").toString());
+        // 可退金额 = 总收款额-应收应款额+优惠金额
+        BigDecimal sumReceiptResidue = sumAmtRec.subtract(accountForUpdate.getReceivableHandle()).add(accountForUpdate.getReceivableWaive());
+
+        // 如果可退金额小于0 ,则提示余额不足
+        if (sumReceiptResidue.compareTo(BigDecimal.ZERO) == -1) {
+            throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.RESIDUE_NO_LESS.getMessage());
+        }
+
+        // 更新账款总表上的收款总额和可用金额
+        Account accountUpdate = new Account();
+        accountUpdate.setReceipt(sumAmtRec).setReceiptResidue(sumReceiptResidue).setObjectId(objectId);
+        super.updateByUuid(accountUpdate);
+    }
+
+    /**
+     * @desc : 更新资金账户余额
+     * @author : 付斌
+     * @date : 2024-03-22 11:08
+     */
+    public void updateMac(String macId) {
 
-	@Override
-	public BaseMapper<Account> getRepository() {
-		return accountMapper;
-	}
+        Map<String, Object> mapSumAmtInflow = moneyAccountItemMapper.getSumAmtInflow(macId);
+        BigDecimal sumAmtInflow = new BigDecimal(mapSumAmtInflow.get("sumAmtInflow").toString());
 
-	@Autowired
-	private AccountMapper accountMapper;
+        // 如果余额小于0 ,则提示余额不足
+        if (sumAmtInflow.compareTo(BigDecimal.ZERO) == -1) {
+            throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.RESIDUE_NO_LESS.getMessage());
+        }
 
+        // 更新账款总表上的收款总额和可用金额
+        MoneyAccount moneyAccountUpdate = new MoneyAccount();
+        moneyAccountUpdate.setBalance(sumAmtInflow).setMacId(macId);
+        moneyAccountService.updateByUuid(moneyAccountUpdate);
+    }
 }

+ 107 - 28
src/main/java/com/dk/mdm/service/mac/RecPayService.java

@@ -1,6 +1,5 @@
 package com.dk.mdm.service.mac;
 
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.dk.common.exception.BaseBusinessException;
 import com.dk.common.infrastructure.annotaiton.Pagination;
 import com.dk.common.infrastructure.constant.Constant;
@@ -14,6 +13,8 @@ import com.dk.mdm.infrastructure.convert.mac.RecPayItemConvert;
 import com.dk.mdm.mapper.mac.AccountItemMapper;
 import com.dk.mdm.mapper.mac.AccountMapper;
 import com.dk.mdm.mapper.mac.RecPayItemMapper;
+import com.dk.mdm.mapper.mst.MoneyAccountItemMapper;
+import com.dk.mdm.mapper.mst.MoneyAccountMapper;
 import com.dk.mdm.model.pojo.mac.Account;
 import com.dk.mdm.model.pojo.mac.AccountItem;
 import com.dk.mdm.model.pojo.mac.RecPay;
@@ -21,6 +22,8 @@ import com.dk.mdm.mapper.mac.RecPayMapper;
 import com.dk.common.service.BaseService;
 import com.dk.common.mapper.BaseMapper;
 import com.dk.mdm.model.pojo.mac.RecPayItem;
+import com.dk.mdm.model.pojo.mst.MoneyAccount;
+import com.dk.mdm.model.pojo.mst.MoneyAccountItem;
 import com.dk.mdm.model.query.mac.RecPayItemQuery;
 import com.dk.mdm.model.query.mac.RecPayQuery;
 import com.dk.mdm.model.response.mac.RecPayItemResponse;
@@ -28,15 +31,13 @@ import com.dk.mdm.model.response.mac.RecPayResponse;
 import com.dk.mdm.model.vo.mac.RecPayItemVO;
 import com.dk.mdm.model.vo.mac.RecPayVO;
 import com.dk.mdm.service.common.CommonService;
+import com.dk.mdm.service.mst.MoneyAccountService;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import java.util.stream.Collectors;
+import java.math.BigDecimal;
+import java.util.*;
 
 @Service
 @Transactional
@@ -71,9 +72,18 @@ public class RecPayService extends BaseService<RecPay> {
     private AccountItemService accountItemService;
 
     @Autowired
+    private MoneyAccountMapper moneyAccountMapper;
+
+    @Autowired
     private AccountItemMapper accountItemMapper;
 
     @Autowired
+    private MoneyAccountService moneyAccountService;
+
+    @Autowired
+    private MoneyAccountItemMapper moneyAccountItemMapper;
+
+    @Autowired
     private CommonService commonService;
 
     @Autowired
@@ -138,15 +148,29 @@ public class RecPayService extends BaseService<RecPay> {
                 AccountItem accountItem = new AccountItem();
                 accountItem.setAccItemType(Constant.accItemType.SHOU_KUAN.getName())
                         .setObjectId(recPayVO.getObjectId()).setOrgId(recPayVO.getOrgId()).setStaffId(recPayVO.getStaffId())
-                        .setAccDate(recPayVO.getAccDate()).setRecStatus(Constant.recStatuse.QUE_DING.getName()).setAmtRec(recPayItemVO.getAmtRec())
+                        .setAccDate(recPayVO.getAccDate()).setRecStatus(Constant.recStatuse.QUE_DING.getName()).setAmtRec(recPayItem.getAmtRec())
                         .setBiznisType("t_mac_rec_pay_item").setBiznisId(recPayItem.getItemId()).setBiznisNo(recPayVO.getRpNo())
                         .setMakeStaff(recPayVO.getMakeStaff()).setCpId(recPayVO.getCpId());
                 accountItemMapper.insert(accountItem);
 
-                // 更新收款单上的应收账款
+                // 更新收款单上的账款明细Id
                 RecPayItem recPayItemUpdate = new RecPayItem();
                 recPayItemUpdate.setAccItemId(accountItem.getItemId()).setRpId(recPayVO.getRpId());
                 recPayItemService.updateByUuid(recPayItemUpdate);
+
+                // 插入资金流水
+                MoneyAccountItem moneyAccountItem = new MoneyAccountItem();
+                moneyAccountItem.setMacId(recPayItem.getMacId()).setFlowType(Constant.FlowType.SHOU_FU_KUAN.getName())
+                        .setInvoiceId(recPayItem.getItemId()).setAmtInflow(recPayItem.getAmtRec()).setAccDate(recPayVO.getAccDate())
+                        .setMakeStaff(recPayItem.getMakeStaff()).setCpId(recPayItem.getCpId());
+                moneyAccountItemMapper.insert(moneyAccountItem);
+
+                // 更新资金账户
+                MoneyAccount moneyAccountForUpdate = moneyAccountMapper.selectByIdForUpdate(recPayItem.getMacId());
+                MoneyAccount moneyAccountUpdate = new MoneyAccount();
+                moneyAccountUpdate.setBalance(moneyAccountForUpdate.getBalance().add(recPayItem.getAmtRec()))
+                        .setMacId(moneyAccountForUpdate.getMacId());
+                moneyAccountService.updateByUuid(moneyAccountUpdate);
             }
         }
 
@@ -205,15 +229,35 @@ public class RecPayService extends BaseService<RecPay> {
                 AccountItem accountItem = new AccountItem();
                 accountItem.setAccItemType(Constant.accItemType.SHOU_KUAN.getName())
                         .setObjectId(recPayVO.getObjectId()).setOrgId(recPayVO.getOrgId()).setStaffId(recPayVO.getStaffId())
-                        .setAccDate(recPayVO.getAccDate()).setRecStatus(Constant.recStatuse.QUE_DING.getName()).setAmtRec(recPayItemVO.getAmtRec())
+                        .setAccDate(recPayVO.getAccDate()).setRecStatus(Constant.recStatuse.QUE_DING.getName()).setAmtRec(recPayItem.getAmtRec())
                         .setBiznisType("t_mac_rec_pay_item").setBiznisId(recPayItem.getItemId()).setBiznisNo(recPayVO.getRpNo())
                         .setMakeStaff(recPayVO.getMakeStaff()).setCpId(recPayVO.getCpId());
                 accountItemMapper.insert(accountItem);
 
-                // 更新收款单上的应收账款
+                // 更新收款单上的账款明细Id
                 RecPayItem recPayItemUpdate = new RecPayItem();
                 recPayItemUpdate.setAccItemId(accountItem.getItemId()).setRpId(recPayVO.getRpId());
                 recPayItemService.updateByUuid(recPayItemUpdate);
+
+                // 插入资金流水
+                MoneyAccountItem moneyAccountItem = new MoneyAccountItem();
+                moneyAccountItem.setMacId(recPayItem.getMacId()).setFlowType(Constant.FlowType.SHOU_FU_KUAN.getName())
+                        .setInvoiceId(recPayItem.getItemId()).setAmtInflow(recPayItem.getAmtRec()).setAccDate(recPayVO.getAccDate())
+                        .setMakeStaff(recPayItem.getMakeStaff()).setCpId(recPayItem.getCpId());
+                moneyAccountItemMapper.insert(moneyAccountItem);
+
+                // 更新资金账户
+                MoneyAccount moneyAccountForUpdate = moneyAccountMapper.selectByIdForUpdate(recPayItem.getMacId());
+
+                // 如果转账之后账户余额小于0,则提示资金账户余额不足,不能退款
+                if ((moneyAccountForUpdate.getBalance().add(recPayItem.getAmtRec())).compareTo(BigDecimal.ZERO) == -1) {
+                    throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.MAC_BALANCE_NO_LESS.getMessage());
+                }
+
+                MoneyAccount moneyAccountUpdate = new MoneyAccount();
+                moneyAccountUpdate.setBalance(moneyAccountForUpdate.getBalance().add(recPayItem.getAmtRec()))
+                        .setMacId(moneyAccountForUpdate.getMacId());
+                moneyAccountService.updateByUuid(moneyAccountUpdate);
             }
         }
 
@@ -235,31 +279,66 @@ public class RecPayService extends BaseService<RecPay> {
             rollbackFor = {Exception.class}
     )
     public ResponseResultVO<?> update(RecPayVO recPayVO) {
-        RecPay recPay = recPayConvert.convertToPo(recPayVO);
 
-        //删除的
-        List<RecPayItemVO> deleteRecPayItemVOList = recPayVO.getDeleteItemList().stream().filter(it -> it.getItemId() != null).collect(Collectors.toList());
-        if (deleteRecPayItemVOList.size() > 0) {
-            for (RecPayItemVO recPayItemVO : deleteRecPayItemVOList) {
-                recPayItemMapper.deleteById(recPayItemVO.getItemId());
+        // 将之前的明细全部删除
+        List<RecPayItem> recPayItemOriginalList = recPayItemMapper.selectByZIdForUpdate(recPayVO.getRpId());
+        // 需要重新计算的资金账户
+        List<String> macList = new ArrayList<>();
+        for (RecPayItem recPayItem : recPayItemOriginalList) {
+            // 删除收付款明细
+            recPayItemMapper.deleteById(recPayItem.getItemId());
+            // 删除账款明细
+            accountItemMapper.deleteById(recPayItem.getAccItemId());
+            // 删除账户流水
+            moneyAccountItemMapper.deleteByInvoiceId(recPayItem.getItemId());
+
+            if (!macList.contains(recPayItem.getMacId())) {
+                macList.add(recPayItem.getMacId());
             }
         }
-        // 新增的
-        List<RecPayItemVO> insertRecPayItemVOList = recPayVO.getItemList().stream().filter(it -> it.getItemId() == null).collect(Collectors.toList());
-        for (RecPayItemVO recPayItemVO : insertRecPayItemVOList) {
+
+        // 新增明细
+        for (RecPayItemVO recPayItemVO : recPayVO.getItemList()) {
             RecPayItem recPayItem = recPayItemConvert.convertToPo(recPayItemVO);
-            recPayItem.setRpId(recPay.getRpId()).setCpId(recPay.getCpId());
+            recPayItem.setRpId(recPayVO.getRpId()).setCpId(recPayVO.getCpId());
             recPayItemMapper.insert(recPayItem);
+
+            // 插入账款明细
+            AccountItem accountItem = new AccountItem();
+            accountItem.setAccItemType(Constant.accItemType.SHOU_KUAN.getName())
+                    .setObjectId(recPayVO.getObjectId()).setOrgId(recPayVO.getOrgId()).setStaffId(recPayVO.getStaffId())
+                    .setAccDate(recPayVO.getAccDate()).setRecStatus(Constant.recStatuse.QUE_DING.getName()).setAmtRec(recPayItem.getAmtRec())
+                    .setBiznisType("t_mac_rec_pay_item").setBiznisId(recPayItem.getItemId()).setBiznisNo(recPayVO.getRpNo())
+                    .setMakeStaff(recPayVO.getMakeStaff()).setCpId(recPayVO.getCpId());
+            accountItemMapper.insert(accountItem);
+
+            // 更新收款单上的账款明细Id
+            RecPayItem recPayItemUpdate = new RecPayItem();
+            recPayItemUpdate.setAccItemId(accountItem.getItemId()).setRpId(recPayVO.getRpId());
+            recPayItemService.updateByUuid(recPayItemUpdate);
+
+            // 插入资金流水
+            MoneyAccountItem moneyAccountItem = new MoneyAccountItem();
+            moneyAccountItem.setMacId(recPayItem.getMacId()).setFlowType(Constant.FlowType.SHOU_FU_KUAN.getName())
+                    .setInvoiceId(recPayItem.getItemId()).setAmtInflow(recPayItem.getAmtRec()).setAccDate(recPayVO.getAccDate())
+                    .setMakeStaff(recPayItem.getMakeStaff()).setCpId(recPayItem.getCpId());
+            moneyAccountItemMapper.insert(moneyAccountItem);
+
+            if (!macList.contains(recPayItem.getMacId())) {
+                macList.add(recPayItem.getMacId());
+            }
         }
-        // 编辑的
-        List<RecPayItemVO> editRecPayItemVOList = recPayVO.getItemList().stream().filter(it -> it.getItemId() != null).collect(Collectors.toList());
-        for (RecPayItemVO recPayItemVO : editRecPayItemVOList) {
-            RecPayItem recPayItem = recPayItemConvert.convertToPo(recPayItemVO);
-            recPayItemService.updateByUuid(recPayItem);
+
+        // 更新总账表的总收款额和可用额
+        accountService.updateReceipt(recPayVO.getObjectId());
+        // 更新账户余额
+        for (String macId : macList) {
+            accountService.updateMac(macId);
         }
-        
-        return ResponseResultUtil.success(super.update(recPay, new UpdateWrapper<RecPay>().lambda().eq(RecPay::getRpId,
-                UUID.fromString(recPay.getRpId()))));
+
+        // 更新收款单总表
+        RecPay recPay = recPayConvert.convertToPo(recPayVO);
+        return ResponseResultUtil.success(super.updateByUuid(recPay));
     }
 
     /**

+ 5 - 5
src/main/java/com/dk/mdm/service/t_mst/MoneyAccountItemService.java → src/main/java/com/dk/mdm/service/mst/MoneyAccountItemService.java

@@ -1,11 +1,11 @@
-package com.dk.mdm.service.t_mst;
+package com.dk.mdm.service.mst;
 
-import com.dk.mdm.model.pojo.t_mst.MoneyAccountItem;
-import com.dk.mdm.mapper.t_mst.MoneyAccountItemMapper;
-import com.dk.common.service.BaseService;
 import com.dk.common.mapper.BaseMapper;
-import org.springframework.stereotype.Service;
+import com.dk.common.service.BaseService;
+import com.dk.mdm.mapper.mst.MoneyAccountItemMapper;
+import com.dk.mdm.model.pojo.mst.MoneyAccountItem;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service