Преглед изворни кода

Merge branch 'master' of http://git.dongkesoft.com:9001/iBOSS-2.0-Mini/iboss-server-mdm

于继渤 пре 2 година
родитељ
комит
1775f61b89
23 измењених фајлова са 995 додато и 244 уклоњено
  1. 23 0
      src/main/java/com/dk/mdm/controller/mac/MacTransferItemController.java
  2. 1 1
      src/main/java/com/dk/mdm/controller/mac/OtherPayableItemController.java
  3. 1 1
      src/main/java/com/dk/mdm/controller/mac/OtherReceivableItemController.java
  4. 1 1
      src/main/java/com/dk/mdm/controller/mac/RecPayHandleItemController.java
  5. 1 1
      src/main/java/com/dk/mdm/controller/mac/RecPayItemController.java
  6. 22 0
      src/main/java/com/dk/mdm/infrastructure/convert/mac/MacTransferItemConvert.java
  7. 29 0
      src/main/java/com/dk/mdm/mapper/mac/MacTransferItemMapper.java
  8. 182 0
      src/main/java/com/dk/mdm/mapper/mac/MacTransferItemMapper.xml
  9. 0 6
      src/main/java/com/dk/mdm/mapper/mac/MacTransferMapper.java
  10. 1 44
      src/main/java/com/dk/mdm/mapper/mac/MacTransferMapper.xml
  11. 16 6
      src/main/java/com/dk/mdm/mapper/mst/MoneyAccountMapper.xml
  12. 0 26
      src/main/java/com/dk/mdm/model/pojo/mac/MacTransfer.java
  13. 129 0
      src/main/java/com/dk/mdm/model/pojo/mac/MacTransferItem.java
  14. 129 0
      src/main/java/com/dk/mdm/model/query/mac/MacTransferItemQuery.java
  15. 0 26
      src/main/java/com/dk/mdm/model/query/mac/MacTransferQuery.java
  16. 129 0
      src/main/java/com/dk/mdm/model/response/mac/MacTransferItemResponse.java
  17. 0 26
      src/main/java/com/dk/mdm/model/response/mac/MacTransferResponse.java
  18. 0 3
      src/main/java/com/dk/mdm/model/response/mst/MoneyAccountResponse.java
  19. 129 0
      src/main/java/com/dk/mdm/model/vo/mac/MacTransferItemVO.java
  20. 4 27
      src/main/java/com/dk/mdm/model/vo/mac/MacTransferVO.java
  21. 28 0
      src/main/java/com/dk/mdm/service/mac/MacTransferItemService.java
  22. 117 67
      src/main/java/com/dk/mdm/service/mac/MacTransferService.java
  23. 53 9
      src/main/java/com/dk/mdm/service/mst/MoneyAccountService.java

+ 23 - 0
src/main/java/com/dk/mdm/controller/mac/MacTransferItemController.java

@@ -0,0 +1,23 @@
+package com.dk.mdm.controller.mac;
+
+import com.dk.mdm.model.pojo.mac.MacTransferItem;
+import com.dk.common.service.BaseService;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RestController;
+import io.swagger.annotations.Api;
+import com.dk.mdm.service.mac.MacTransferItemService;
+
+@Api(tags = "资金转账明细API接口")
+@RestController
+@RequestMapping("/mac/transferItem")
+public class MacTransferItemController {
+
+    public BaseService<MacTransferItem> getService() {
+        return macTransferItemService;
+    }
+
+    @Autowired
+    private MacTransferItemService macTransferItemService;
+
+}

+ 1 - 1
src/main/java/com/dk/mdm/controller/mac/OtherPayableItemController.java

@@ -11,7 +11,7 @@ import com.dk.mdm.service.mac.OtherPayableItemService;
 
 @Api(tags = "其他支出明细API接口")
 @RestController
-@RequestMapping("/otherPayableItem")
+@RequestMapping("/mac/otherPayableItem")
 public class OtherPayableItemController{
 
     public BaseService<OtherPayableItem> getService() {

+ 1 - 1
src/main/java/com/dk/mdm/controller/mac/OtherReceivableItemController.java

@@ -11,7 +11,7 @@ import com.dk.mdm.service.mac.OtherReceivableItemService;
 
 @Api(tags = "其他收入明细API接口")
 @RestController
-@RequestMapping("/otherReceivableItem")
+@RequestMapping("/mac/otherReceivableItem")
 public class OtherReceivableItemController{
 
     public BaseService<OtherReceivableItem> getService() {

+ 1 - 1
src/main/java/com/dk/mdm/controller/mac/RecPayHandleItemController.java

@@ -10,7 +10,7 @@ import com.dk.mdm.service.mac.RecPayHandleItemService;
 
 @Api(tags = "账务冲抵明细API接口")
 @RestController
-@RequestMapping("/recPayHandleItem")
+@RequestMapping("/mac/recPayHandleItem")
 public class RecPayHandleItemController{
 
     public BaseService<RecPayHandleItem> getService() {

+ 1 - 1
src/main/java/com/dk/mdm/controller/mac/RecPayItemController.java

@@ -11,7 +11,7 @@ import com.dk.mdm.service.mac.RecPayItemService;
 
 @Api(tags = "收付款单明细API接口")
 @RestController
-@RequestMapping("/recPayItem")
+@RequestMapping("/mac/recPayItem")
 public class RecPayItemController{
 
     public BaseService<RecPayItem> getService() {

+ 22 - 0
src/main/java/com/dk/mdm/infrastructure/convert/mac/MacTransferItemConvert.java

@@ -0,0 +1,22 @@
+package com.dk.mdm.infrastructure.convert.mac;
+
+import com.dk.mdm.model.pojo.mac.MacTransferItem;
+import com.dk.mdm.model.vo.mac.MacTransferItemVO;
+import org.mapstruct.Mapper;
+
+/**
+ * @desc   : MacTransferItem转换类
+ * @author : 付斌
+ * @date   : 2024-02-28 10:18
+ */
+@Mapper(componentModel = "spring")
+public interface MacTransferItemConvert {
+
+    /**
+     * @desc   : 转换vo为pojo
+     * @author : 付斌
+     * @date   : 2024-02-28 15:26
+     */
+    MacTransferItem convertToPo(MacTransferItemVO macTransferItemVO);
+
+}

+ 29 - 0
src/main/java/com/dk/mdm/mapper/mac/MacTransferItemMapper.java

@@ -0,0 +1,29 @@
+package com.dk.mdm.mapper.mac;
+
+import com.dk.mdm.model.pojo.mac.MacTransferItem;
+import com.dk.common.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 资金转账明细 Mapper
+ */
+@Repository
+public interface MacTransferItemMapper extends BaseMapper<MacTransferItem> {
+
+    /**
+     * @desc :根据主表主键锁定表t_mac_transfer_item的多行数据
+     * @author : 付斌
+     * @date : 2024-04-08 13:13
+     */
+    List<MacTransferItem> selectByZIdForUpdate(String id);
+
+    /**
+     * @desc :根据转入账户,查期初转账明细
+     * @author : 付斌
+     * @date : 2024-04-08 14:28
+     */
+    MacTransferItem selectByInMacIdForUpdate(String id);
+}
+

+ 182 - 0
src/main/java/com/dk/mdm/mapper/mac/MacTransferItemMapper.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.dk.mdm.mapper.mac.MacTransferItemMapper">
+
+    <!-- 通用设置 -->
+    <!-- 通用查询列 -->
+    <sql id="Base_Column_List">
+        t.item_id, t.trf_id, t.trf_in_mac, t.trf_out_mac, t.amt_trf, t.remarks, t.make_staff, t.make_time, t.flg_valid, t.cp_id
+    </sql>
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.dk.mdm.model.pojo.mac.MacTransferItem">
+        <id column="item_id" property="itemId"/>
+            <result column="trf_id" property="trfId" typeHandler="UuidTypeHandler"/>
+            <result column="trf_in_mac" property="trfInMac" typeHandler="UuidTypeHandler"/>
+            <result column="trf_out_mac" property="trfOutMac" typeHandler="UuidTypeHandler"/>
+            <result column="amt_trf" property="amtTrf"/>
+            <result column="remarks" property="remarks"/>
+            <result column="make_staff" property="makeStaff" typeHandler="UuidTypeHandler"/>
+            <result column="make_time" property="makeTime" typeHandler="TimestampTypeHandler"/>
+            <result column="flg_valid" property="flgValid"/>
+            <result column="cp_id" property="cpId"/>
+    </resultMap>
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMapResponse" type="com.dk.mdm.model.response.mac.MacTransferItemResponse">
+        <id column="item_id" property="itemId"/>
+            <result column="trf_id" property="trfId" typeHandler="UuidTypeHandler"/>
+            <result column="trf_in_mac" property="trfInMac" typeHandler="UuidTypeHandler"/>
+            <result column="trf_out_mac" property="trfOutMac" typeHandler="UuidTypeHandler"/>
+            <result column="amt_trf" property="amtTrf"/>
+            <result column="remarks" property="remarks"/>
+            <result column="make_staff" property="makeStaff" typeHandler="UuidTypeHandler"/>
+            <result column="make_time" property="makeTime" typeHandler="TimestampTypeHandler"/>
+            <result column="flg_valid" property="flgValid"/>
+            <result column="cp_id" property="cpId"/>
+    </resultMap>
+
+    <!-- 通用条件列 -->
+    <sql id="Condition">
+        <where>
+            <if test="trfId != null and trfId != ''">
+                AND t.trf_id = #{trfId}
+            </if>
+            <if test="trfInMac != null and trfInMac != ''">
+                AND t.trf_in_mac = #{trfInMac}
+            </if>
+            <if test="trfOutMac != null and trfOutMac != ''">
+                AND t.trf_out_mac = #{trfOutMac}
+            </if>
+            <if test="amtTrf != null">
+                AND t.amt_trf = #{amtTrf}
+            </if>
+            <if test="remarks != null and remarks != ''">
+                AND t.remarks = #{remarks}
+            </if>
+            <if test="makeStaff != null and makeStaff != ''">
+                AND t.make_staff = #{makeStaff}
+            </if>
+            <if test="makeTime != null">
+                AND t.make_time = #{makeTime}
+            </if>
+            <if test="flgValid != null">
+                AND t.flg_valid = #{flgValid}
+            </if>
+            <if test="cpId != null">
+                AND t.cp_id = #{cpId}
+            </if>
+        </where>
+    </sql>
+
+    <sql id="idsForeach">
+        <!-- 根据主键itemId批量操作 -->
+        WHERE t.item_id in
+        <foreach collection="ids" index="index" item="item" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+    </sql>
+
+    <!-- 查询表t_mac_transfer_item,(条件查询+分页)列表 -->
+    <select id="selectByCond" resultMap="BaseResultMapResponse">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM dkic_b.t_mac_transfer_item as t
+        <include refid="Condition"/>
+        <if test="pageSize != null and currentPage != null and pageSize != 0 and currentPage != 0">
+            limit #{end} offset #{start}
+        </if>
+    </select>
+
+    <!-- 查询表t_mac_transfer_item,(条件查询)个数 -->
+    <select id="countByCond" resultType="Long">
+        SELECT count(1)
+        FROM dkic_b.t_mac_transfer_item as t
+        <include refid="Condition"/>
+    </select>
+
+    <!-- 根据主键查询表t_mac_transfer_item的一行数据 -->
+    <select id="selectById" resultMap="BaseResultMapResponse">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM dkic_b.t_mac_transfer_item as t
+        WHERE t.item_id = #{id}::uuid
+    </select>
+
+    <!-- 根据主键锁定表t_mac_transfer_item的一行数据 -->
+    <select id="selectByIdForUpdate" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM dkic_b.t_mac_transfer_item as t
+        WHERE t.item_id = #{id}::uuid
+        for update
+    </select>
+
+    <!-- 根据主键锁定表t_mac_transfer_item的一行数据 -->
+    <select id="selectByZIdForUpdate" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM dkic_b.t_mac_transfer_item as t
+        WHERE t.trf_id = #{id}::uuid
+        for update
+    </select>
+
+    <!-- 根据主表主键锁定表t_mac_transfer_item的多行数据 -->
+    <select id="selectByIdsForUpdate" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM dkic_b.t_mac_transfer_item as t
+        <include refid="idsForeach"/>
+        for update
+    </select>
+
+    <insert id="insertBatch">
+        insert into dkic_b.t_mac_transfer_item
+        (
+        <trim suffixOverrides=",">
+            trf_id,
+            trf_in_mac,
+            trf_out_mac,
+            amt_trf,
+            remarks,
+            make_staff,
+            make_time,
+            cp_id,
+            op_app_code,
+        </trim>
+        )
+        values
+        <foreach collection="list" index="index" item="item" separator=",">
+            (
+            <trim suffixOverrides=",">
+                #{item.trfId}::uuid,
+                #{item.trfInMac}::uuid,
+                #{item.trfOutMac}::uuid,
+                #{item.amtTrf},
+                #{item.remarks},
+                #{item.makeStaff}::uuid,
+                #{item.makeTime},
+                #{item.cpId},
+                #{item.opAppCode},
+            </trim>
+            )
+        </foreach>
+    </insert>
+
+    <delete id="deleteById">
+        DELETE
+        FROM dkic_b.t_mac_transfer_item
+        WHERE item_id = #{id}::uuid;
+    </delete>
+
+    <!-- 根据主键锁定表t_mac_transfer的一行数据 -->
+    <select id="selectByInMacIdForUpdate" resultMap="BaseResultMap">
+        SELECT
+        <include refid="Base_Column_List"/>
+        FROM dkic_b.t_mac_transfer_item as t
+         inner join dkic_b.t_mac_transfer as tmt
+             on tmt.trf_id = t.trf_id and tmt.trf_type = 0
+        where t.trf_in_mac = #{id}::uuid
+        for update
+    </select>
+</mapper>

+ 0 - 6
src/main/java/com/dk/mdm/mapper/mac/MacTransferMapper.java

@@ -34,11 +34,5 @@ public interface MacTransferMapper extends BaseMapper<MacTransfer>{
      * @date   : 2024-03-03 9:25
      */
     MacTransferResponse selectById(String id);
-    /**
-     * @desc   : 
-     * @author : 付斌
-     * @date   : 2024-04-05 11:17
-     */
-    MacTransfer selectByInMacIdForUpdate(String id);
 }
 

+ 1 - 44
src/main/java/com/dk/mdm/mapper/mac/MacTransferMapper.xml

@@ -5,7 +5,7 @@
     <!-- 通用设置 -->
     <!-- 通用查询列 -->
     <sql id="Base_Column_List">
-        trf_id, trf_no, trf_type, org_id, staff_id, trf_in_mac, trf_out_mac, amt_trf, acc_date, remarks, annex_paths, make_staff, make_time, flg_valid, cp_id
+        trf_id, trf_no, trf_type, org_id, staff_id, acc_date, remarks, annex_paths, make_staff, make_time, flg_valid, cp_id
     </sql>
 
     <!-- 通用查询映射结果 -->
@@ -15,9 +15,6 @@
             <result column="trf_type" property="trfType"/>
             <result column="org_id" property="orgId" typeHandler="UuidTypeHandler"/>
             <result column="staff_id" property="staffId" typeHandler="UuidTypeHandler"/>
-            <result column="trf_in_mac" property="trfInMac" typeHandler="UuidTypeHandler"/>
-            <result column="trf_out_mac" property="trfOutMac" typeHandler="UuidTypeHandler"/>
-            <result column="amt_trf" property="amtTrf"/>
             <result column="acc_date" property="accDate" typeHandler="TimestampTypeHandler"/>
             <result column="remarks" property="remarks"/>
             <result column="annex_paths" property="annexPaths" typeHandler="JsonTypeHandler"/>
@@ -34,9 +31,6 @@
             <result column="trf_type" property="trfType"/>
             <result column="org_id" property="orgId" typeHandler="UuidTypeHandler"/>
             <result column="staff_id" property="staffId" typeHandler="UuidTypeHandler"/>
-            <result column="trf_in_mac" property="trfInMac" typeHandler="UuidTypeHandler"/>
-            <result column="trf_out_mac" property="trfOutMac" typeHandler="UuidTypeHandler"/>
-            <result column="amt_trf" property="amtTrf"/>
             <result column="acc_date" property="accDate" typeHandler="TimestampTypeHandler"/>
             <result column="remarks" property="remarks"/>
             <result column="annex_paths" property="annexPaths" typeHandler="JsonTypeHandler"/>
@@ -61,15 +55,6 @@
             <if test="staffId != null and staffId != ''">
                 AND staff_id = #{staffId}
             </if>
-            <if test="trfInMac != null and trfInMac != ''">
-                AND t.trf_in_mac = #{trfInMac}
-            </if>
-            <if test="trfOutMac != null and trfOutMac != ''">
-                AND t.trf_out_mac = #{trfOutMac}
-            </if>
-            <if test="amtTrf != null">
-                AND t.amt_trf = #{amtTrf}
-            </if>
             <if test="accDate != null">
                 AND t.acc_date = #{accDate}
             </if>
@@ -116,9 +101,6 @@
                t.trf_type,
                t.org_id,
                t.staff_id,
-               t.trf_in_mac,
-               t.trf_out_mac,
-               t.amt_trf,
                t.acc_date,
                t.remarks,
                t.annex_paths,
@@ -132,8 +114,6 @@
                tms.staff_name       as "staffName",
                makestaff.staff_name as "makeStaffName"
         FROM dkic_b.t_mac_transfer as t
-                 left join dkic_b.t_mst_money_account as main on main.mac_id = t.trf_in_mac
-                 left join dkic_b.t_mst_money_account as maout on maout.mac_id = t.trf_out_mac
                  left join dkic_b.t_mst_org tmo on t.org_id = tmo.org_id
                  left join dkic_b.t_mst_staff tms on t.staff_id = tms.staff_id
                  left join dkic_b.t_mst_staff as makestaff on t.make_staff = makestaff.staff_id
@@ -147,8 +127,6 @@
     <select id="countByCond" resultType="Long">
         SELECT count(1)
         FROM dkic_b.t_mac_transfer as t
-                 left join dkic_b.t_mst_money_account as main on main.mac_id = t.trf_in_mac
-                 left join dkic_b.t_mst_money_account as maout on maout.mac_id = t.trf_out_mac
                  left join dkic_b.t_mst_org tmo on t.org_id = tmo.org_id
                  left join dkic_b.t_mst_staff tms on t.staff_id = tms.staff_id
                  left join dkic_b.t_mst_staff as makestaff on t.make_staff = makestaff.staff_id
@@ -162,9 +140,6 @@
                t.trf_type,
                t.org_id,
                t.staff_id,
-               t.trf_in_mac,
-               t.trf_out_mac,
-               t.amt_trf,
                t.acc_date,
                t.remarks,
                t.annex_paths,
@@ -178,8 +153,6 @@
                tms.staff_name       as "staffName",
                makestaff.staff_name as "makeStaffName"
         FROM dkic_b.t_mac_transfer as t
-                 left join dkic_b.t_mst_money_account as main on main.mac_id = t.trf_in_mac
-                 left join dkic_b.t_mst_money_account as maout on maout.mac_id = t.trf_out_mac
                  left join dkic_b.t_mst_org tmo on t.org_id = tmo.org_id
                  left join dkic_b.t_mst_staff tms on t.staff_id = tms.staff_id
                  left join dkic_b.t_mst_staff as makestaff on t.make_staff = makestaff.staff_id
@@ -195,16 +168,6 @@
         for update
     </select>
 
-    <!-- 根据主键锁定表t_mac_transfer的一行数据 -->
-    <select id="selectByInMacIdForUpdate" resultMap="BaseResultMap">
-        SELECT
-        <include refid="Base_Column_List"/>
-        FROM dkic_b.t_mac_transfer
-        WHERE trf_type = 0
-          and trf_in_mac = #{id}::uuid
-        for update
-    </select>
-
     <!-- 根据主键锁定表t_mac_transfer的多行数据 -->
     <select id="selectByIdsForUpdate" resultMap="BaseResultMap">
         SELECT
@@ -222,9 +185,6 @@
             trf_type,
             org_id,
             staff_id,
-            trf_in_mac,
-            trf_out_mac,
-            amt_trf,
             acc_date,
             remarks,
             annex_paths,
@@ -242,9 +202,6 @@
                 #{item.trfType},
                 #{item.orgId}::uuid,
                 #{item.staffId}::uuid,
-                #{item.trfInMac}::uuid,
-                #{item.trfOutMac}::uuid,
-                #{item.amtTrf},
                 #{item.accDate},
                 #{item.remarks},
                 #{item.annexPaths},

+ 16 - 6
src/main/java/com/dk/mdm/mapper/mst/MoneyAccountMapper.xml

@@ -74,7 +74,7 @@
                t.mac_code,
                t.mac_name,
                t.mac_Type,
-               dd.data_value            AS "macTypeName",
+               dd.data_value             AS "macTypeName",
                t.balance,
                t.display_no,
                t.mac_receipt_code,
@@ -83,12 +83,17 @@
                t.remarks,
                t.flg_valid,
                t.cp_id,
-               coalesce(tmt.amt_trf, 0) as "initBalance"
+               coalesce(tmti.amt_trf, 0) as "initBalance"
         FROM dkic_b.t_mst_money_account as t
                  left join dkic_b.t_mst_dictionary_data as dd on t.mac_type = dd.data_id
-                 left join dkic_b.t_mac_transfer as tmt
-                     on tmt.trf_in_mac = t.mac_id and tmt.trf_type = 0 and tmt.flg_valid
+                 left join(select tmti.trf_in_mac, tmti.amt_trf
+                           from dkic_b.t_mac_transfer as tmt
+                                    inner join dkic_b.t_mac_transfer_item as tmti
+                                        on tmti.trf_id = tmt.trf_id and tmt.flg_valid
+                                               and tmti.flg_valid and tmt.trf_type = 0) tmti
+                          on tmti.trf_in_mac = t.mac_id
         <include refid="Condition"/>
+        order by t.display_no
     </select>
 
     <!-- 查询表t_mst_money_account,(条件查询)个数 -->
@@ -113,10 +118,15 @@
                t.remarks,
                t.flg_valid,
                t.cp_id,
-               coalesce(tmt.amt_trf, 0) as "initBalance"
+               coalesce(tmti.amt_trf, 0) as "initBalance"
         FROM dkic_b.t_mst_money_account as t
                  left join dkic_b.t_mst_dictionary_data as dd on t.mac_type = dd.data_id
-                 left join dkic_b.t_mac_transfer as tmt on tmt.trf_in_mac = t.mac_id and tmt.trf_type = 0
+                 left join(select tmti.trf_in_mac, tmti.amt_trf
+                           from dkic_b.t_mac_transfer as tmt
+                                    inner join dkic_b.t_mac_transfer_item as tmti
+                                               on tmti.trf_id = tmt.trf_id and tmt.flg_valid
+                                                   and tmti.flg_valid and tmt.trf_type = 0) tmti
+                          on tmti.trf_in_mac = t.mac_id
         WHERE t.mac_id = #{macId}::uuid
     </select>
 

+ 0 - 26
src/main/java/com/dk/mdm/model/pojo/mac/MacTransfer.java

@@ -82,32 +82,6 @@ public class MacTransfer extends PageInfo<MacTransfer> implements Serializable {
 
 
     /**
-     * 转入账户
-     */
-    @Excel(name = "转入账户")
-    @ApiModelProperty(value = "转入账户")
-    @TableField(typeHandler = UuidTypeHandler.class)
-    private String trfInMac;
-
-
-    /**
-     * 转出账户
-     */
-    @Excel(name = "转出账户")
-    @ApiModelProperty(value = "转出账户")
-    @TableField(typeHandler = UuidTypeHandler.class)
-    private String trfOutMac;
-
-
-    /**
-     * 转账金额
-     */
-    @Excel(name = "转账金额")
-    @ApiModelProperty(value = "转账金额")
-    private BigDecimal amtTrf;
-
-
-    /**
      * 转账日期 (账务日期)
      */
     @Excel(name = "转账日期 (账务日期)")

+ 129 - 0
src/main/java/com/dk/mdm/model/pojo/mac/MacTransferItem.java

@@ -0,0 +1,129 @@
+package com.dk.mdm.model.pojo.mac;
+
+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.model.pojo.PageInfo;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ *  资金转账明细
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@ExportTitle("资金转账明细")
+@TableName(value = "t_mac_transfer_item", autoResultMap = true)
+@ApiModel(value="实体类:资金转账明细", description="表名:t_mac_transfer_item")
+public class MacTransferItem extends PageInfo<MacTransferItem> implements Serializable {
+
+    /*
+     * 数据库字段
+     */
+
+    /**
+     * 明细ID
+     */
+    @TableId(value = "item_id", type = IdType.AUTO)
+    @ApiModelProperty(value = "明细ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String itemId;
+
+
+    /**
+     * 转账单ID
+     */
+    @Excel(name = "转账单ID")
+    @ApiModelProperty(value = "转账单ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String trfId;
+
+
+    /**
+     * 转入账户
+     */
+    @Excel(name = "转入账户")
+    @ApiModelProperty(value = "转入账户")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String trfInMac;
+
+
+    /**
+     * 转出账户
+     */
+    @Excel(name = "转出账户")
+    @ApiModelProperty(value = "转出账户")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String trfOutMac;
+
+
+    /**
+     * 转账金额
+     */
+    @Excel(name = "转账金额")
+    @ApiModelProperty(value = "转账金额")
+    private BigDecimal amtTrf;
+
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+
+
+    /**
+     * 制单员
+     */
+    @Excel(name = "制单员")
+    @ApiModelProperty(value = "制单员")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String makeStaff;
+
+
+    /**
+     * 制单时间
+     */
+    @Excel(name = "制单时间")
+    @ApiModelProperty(value = "制单时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime makeTime;
+
+
+    /**
+     * 有效标识 (1:正常 0:停用)
+     */
+    @Excel(name = "有效标识 (1:正常 0:停用)")
+    @ApiModelProperty(value = "有效标识 (1:正常 0:停用)")
+    private Boolean flgValid;
+
+
+    /**
+     * 企业ID
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @Excel(name = "企业ID")
+    @ApiModelProperty(value = "企业ID")
+    private Integer cpId;
+
+
+    private static final long serialVersionUID = 1L;
+
+}

+ 129 - 0
src/main/java/com/dk/mdm/model/query/mac/MacTransferItemQuery.java

@@ -0,0 +1,129 @@
+package com.dk.mdm.model.query.mac;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.*;
+import com.dk.common.infrastructure.annotaiton.ExportTitle;
+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 io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ *  资金转账明细
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@ExportTitle("资金转账明细")
+@TableName(value = "t_mac_transfer_item", autoResultMap = true)
+@ApiModel(value="实体类:资金转账明细", description="表名:t_mac_transfer_item")
+public class MacTransferItemQuery extends PageInfo<MacTransferItemQuery> implements Serializable {
+
+    /*
+     * 数据库字段
+     */
+
+    /**
+     * 明细ID
+     */
+    @TableId(value = "item_id", type = IdType.AUTO)
+    @ApiModelProperty(value = "明细ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String itemId;
+
+
+    /**
+     * 转账单ID
+     */
+    @Excel(name = "转账单ID")
+    @ApiModelProperty(value = "转账单ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String trfId;
+
+
+    /**
+     * 转入账户
+     */
+    @Excel(name = "转入账户")
+    @ApiModelProperty(value = "转入账户")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String trfInMac;
+
+
+    /**
+     * 转出账户
+     */
+    @Excel(name = "转出账户")
+    @ApiModelProperty(value = "转出账户")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String trfOutMac;
+
+
+    /**
+     * 转账金额
+     */
+    @Excel(name = "转账金额")
+    @ApiModelProperty(value = "转账金额")
+    private BigDecimal amtTrf;
+
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+
+
+    /**
+     * 制单员
+     */
+    @Excel(name = "制单员")
+    @ApiModelProperty(value = "制单员")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String makeStaff;
+
+
+    /**
+     * 制单时间
+     */
+    @Excel(name = "制单时间")
+    @ApiModelProperty(value = "制单时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime makeTime;
+
+
+    /**
+     * 有效标识 (1:正常 0:停用)
+     */
+    @Excel(name = "有效标识 (1:正常 0:停用)")
+    @ApiModelProperty(value = "有效标识 (1:正常 0:停用)")
+    private Boolean flgValid;
+
+
+    /**
+     * 企业ID
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @Excel(name = "企业ID")
+    @ApiModelProperty(value = "企业ID")
+    private Integer cpId;
+
+
+    private static final long serialVersionUID = 1L;
+
+}

+ 0 - 26
src/main/java/com/dk/mdm/model/query/mac/MacTransferQuery.java

@@ -86,32 +86,6 @@ public class MacTransferQuery extends PageInfo<MacTransferQuery> implements Seri
 
 
     /**
-     * 转入账户
-     */
-    @Excel(name = "转入账户")
-    @ApiModelProperty(value = "转入账户")
-    @TableField(typeHandler = UuidTypeHandler.class)
-    private String trfInMac;
-
-
-    /**
-     * 转出账户
-     */
-    @Excel(name = "转出账户")
-    @ApiModelProperty(value = "转出账户")
-    @TableField(typeHandler = UuidTypeHandler.class)
-    private String trfOutMac;
-
-
-    /**
-     * 转账金额
-     */
-    @Excel(name = "转账金额")
-    @ApiModelProperty(value = "转账金额")
-    private BigDecimal amtTrf;
-
-
-    /**
      * 转账日期 (账务日期)
      */
     @Excel(name = "转账日期 (账务日期)")

+ 129 - 0
src/main/java/com/dk/mdm/model/response/mac/MacTransferItemResponse.java

@@ -0,0 +1,129 @@
+package com.dk.mdm.model.response.mac;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.*;
+import com.dk.common.infrastructure.annotaiton.ExportTitle;
+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 io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ *  资金转账明细
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@ExportTitle("资金转账明细")
+@TableName(value = "t_mac_transfer_item", autoResultMap = true)
+@ApiModel(value="实体类:资金转账明细", description="表名:t_mac_transfer_item")
+public class MacTransferItemResponse extends PageInfo<MacTransferItemResponse> implements Serializable {
+
+    /*
+     * 数据库字段
+     */
+
+    /**
+     * 明细ID
+     */
+    @TableId(value = "item_id", type = IdType.AUTO)
+    @ApiModelProperty(value = "明细ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String itemId;
+
+
+    /**
+     * 转账单ID
+     */
+    @Excel(name = "转账单ID")
+    @ApiModelProperty(value = "转账单ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String trfId;
+
+
+    /**
+     * 转入账户
+     */
+    @Excel(name = "转入账户")
+    @ApiModelProperty(value = "转入账户")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String trfInMac;
+
+
+    /**
+     * 转出账户
+     */
+    @Excel(name = "转出账户")
+    @ApiModelProperty(value = "转出账户")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String trfOutMac;
+
+
+    /**
+     * 转账金额
+     */
+    @Excel(name = "转账金额")
+    @ApiModelProperty(value = "转账金额")
+    private BigDecimal amtTrf;
+
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+
+
+    /**
+     * 制单员
+     */
+    @Excel(name = "制单员")
+    @ApiModelProperty(value = "制单员")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String makeStaff;
+
+
+    /**
+     * 制单时间
+     */
+    @Excel(name = "制单时间")
+    @ApiModelProperty(value = "制单时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime makeTime;
+
+
+    /**
+     * 有效标识 (1:正常 0:停用)
+     */
+    @Excel(name = "有效标识 (1:正常 0:停用)")
+    @ApiModelProperty(value = "有效标识 (1:正常 0:停用)")
+    private Boolean flgValid;
+
+
+    /**
+     * 企业ID
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @Excel(name = "企业ID")
+    @ApiModelProperty(value = "企业ID")
+    private Integer cpId;
+
+
+    private static final long serialVersionUID = 1L;
+
+}

+ 0 - 26
src/main/java/com/dk/mdm/model/response/mac/MacTransferResponse.java

@@ -85,32 +85,6 @@ public class MacTransferResponse extends PageInfo<MacTransferResponse> implement
 
 
     /**
-     * 转入账户
-     */
-    @Excel(name = "转入账户")
-    @ApiModelProperty(value = "转入账户")
-    @TableField(typeHandler = UuidTypeHandler.class)
-    private String trfInMac;
-
-
-    /**
-     * 转出账户
-     */
-    @Excel(name = "转出账户")
-    @ApiModelProperty(value = "转出账户")
-    @TableField(typeHandler = UuidTypeHandler.class)
-    private String trfOutMac;
-
-
-    /**
-     * 转账金额
-     */
-    @Excel(name = "转账金额")
-    @ApiModelProperty(value = "转账金额")
-    private BigDecimal amtTrf;
-
-
-    /**
      * 转账日期 (账务日期)
      */
     @Excel(name = "转账日期 (账务日期)")

+ 0 - 3
src/main/java/com/dk/mdm/model/response/mst/MoneyAccountResponse.java

@@ -145,9 +145,6 @@ public class MoneyAccountResponse extends PageInfo<MoneyAccountResponse> impleme
     private Integer cpId;
 
 
-    @ApiModelProperty(value = "合计账户余额")
-    private BigDecimal totalBalance;
-
     @ApiModelProperty(value = "账户类别 (【数据字典】)")
     private String macTypeName;
 

+ 129 - 0
src/main/java/com/dk/mdm/model/vo/mac/MacTransferItemVO.java

@@ -0,0 +1,129 @@
+package com.dk.mdm.model.vo.mac;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.*;
+import com.dk.common.infrastructure.annotaiton.ExportTitle;
+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 io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ *  资金转账明细
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@ExportTitle("资金转账明细")
+@TableName(value = "t_mac_transfer_item", autoResultMap = true)
+@ApiModel(value="实体类:资金转账明细", description="表名:t_mac_transfer_item")
+public class MacTransferItemVO extends PageInfo<MacTransferItemVO> implements Serializable {
+
+    /*
+     * 数据库字段
+     */
+
+    /**
+     * 明细ID
+     */
+    @TableId(value = "item_id", type = IdType.AUTO)
+    @ApiModelProperty(value = "明细ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String itemId;
+
+
+    /**
+     * 转账单ID
+     */
+    @Excel(name = "转账单ID")
+    @ApiModelProperty(value = "转账单ID")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String trfId;
+
+
+    /**
+     * 转入账户
+     */
+    @Excel(name = "转入账户")
+    @ApiModelProperty(value = "转入账户")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String trfInMac;
+
+
+    /**
+     * 转出账户
+     */
+    @Excel(name = "转出账户")
+    @ApiModelProperty(value = "转出账户")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String trfOutMac;
+
+
+    /**
+     * 转账金额
+     */
+    @Excel(name = "转账金额")
+    @ApiModelProperty(value = "转账金额")
+    private BigDecimal amtTrf;
+
+
+    /**
+     * 备注
+     */
+    @Excel(name = "备注")
+    @ApiModelProperty(value = "备注")
+    private String remarks;
+
+
+    /**
+     * 制单员
+     */
+    @Excel(name = "制单员")
+    @ApiModelProperty(value = "制单员")
+    @TableField(typeHandler = UuidTypeHandler.class)
+    private String makeStaff;
+
+
+    /**
+     * 制单时间
+     */
+    @Excel(name = "制单时间")
+    @ApiModelProperty(value = "制单时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(typeHandler = TimestampTypeHandler.class)
+    private LocalDateTime makeTime;
+
+
+    /**
+     * 有效标识 (1:正常 0:停用)
+     */
+    @Excel(name = "有效标识 (1:正常 0:停用)")
+    @ApiModelProperty(value = "有效标识 (1:正常 0:停用)")
+    private Boolean flgValid;
+
+
+    /**
+     * 企业ID
+     */
+    @TableField(fill = FieldFill.INSERT)
+    @Excel(name = "企业ID")
+    @ApiModelProperty(value = "企业ID")
+    private Integer cpId;
+
+
+    private static final long serialVersionUID = 1L;
+
+}

+ 4 - 27
src/main/java/com/dk/mdm/model/vo/mac/MacTransferVO.java

@@ -20,9 +20,9 @@ import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
 
 import java.io.Serializable;
-import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  *  资金转账
@@ -85,32 +85,6 @@ public class MacTransferVO extends PageInfo<MacTransferVO> implements Serializab
 
 
     /**
-     * 转入账户
-     */
-    @Excel(name = "转入账户")
-    @ApiModelProperty(value = "转入账户")
-    @TableField(typeHandler = UuidTypeHandler.class)
-    private String trfInMac;
-
-
-    /**
-     * 转出账户
-     */
-    @Excel(name = "转出账户")
-    @ApiModelProperty(value = "转出账户")
-    @TableField(typeHandler = UuidTypeHandler.class)
-    private String trfOutMac;
-
-
-    /**
-     * 转账金额
-     */
-    @Excel(name = "转账金额")
-    @ApiModelProperty(value = "转账金额")
-    private BigDecimal amtTrf;
-
-
-    /**
      * 转账日期 (账务日期)
      */
     @Excel(name = "转账日期 (账务日期)")
@@ -172,6 +146,9 @@ public class MacTransferVO extends PageInfo<MacTransferVO> implements Serializab
     @ApiModelProperty(value = "企业ID")
     private Integer cpId;
 
+    @ApiModelProperty(value = "转账明细")
+    private List<MacTransferItemVO> itemList;
+
     private static final long serialVersionUID = 1L;
 
 }

+ 28 - 0
src/main/java/com/dk/mdm/service/mac/MacTransferItemService.java

@@ -0,0 +1,28 @@
+package com.dk.mdm.service.mac;
+
+import com.dk.mdm.model.pojo.mac.MacTransferItem;
+import com.dk.mdm.mapper.mac.MacTransferItemMapper;
+import com.dk.common.service.BaseService;
+import com.dk.common.mapper.BaseMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional
+public class MacTransferItemService extends BaseService<MacTransferItem> {
+
+	@Override
+	public String getPrimaryKey() {
+		return "item_id";
+	}
+
+	@Override
+	public BaseMapper<MacTransferItem> getRepository() {
+		return macTransferItemMapper;
+	}
+
+	@Autowired
+	private MacTransferItemMapper macTransferItemMapper;
+
+}

+ 117 - 67
src/main/java/com/dk/mdm/service/mac/MacTransferService.java

@@ -9,17 +9,21 @@ import com.dk.common.response.ResponseCodeEnum;
 import com.dk.common.response.ResponseResultUtil;
 import com.dk.common.response.ResponseResultVO;
 import com.dk.mdm.infrastructure.convert.mac.MacTransferConvert;
+import com.dk.mdm.infrastructure.convert.mac.MacTransferItemConvert;
+import com.dk.mdm.mapper.mac.MacTransferItemMapper;
 import com.dk.mdm.mapper.mst.MoneyAccountItemMapper;
 import com.dk.mdm.mapper.mst.MoneyAccountMapper;
 import com.dk.mdm.model.pojo.mac.MacTransfer;
 import com.dk.mdm.mapper.mac.MacTransferMapper;
 import com.dk.common.service.BaseService;
 import com.dk.common.mapper.BaseMapper;
+import com.dk.mdm.model.pojo.mac.MacTransferItem;
 import com.dk.mdm.model.pojo.mst.MoneyAccount;
 import com.dk.mdm.model.pojo.mst.MoneyAccountItem;
 import com.dk.mdm.model.query.mac.MacTransferQuery;
 import com.dk.mdm.model.response.mac.MacTransferResponse;
 import com.dk.mdm.model.vo.mac.MacTransferVO;
+import com.dk.mdm.model.vo.mac.MacTransferItemVO;
 import com.dk.mdm.service.common.CommonService;
 import com.dk.mdm.service.mst.MoneyAccountService;
 import org.springframework.stereotype.Service;
@@ -48,6 +52,9 @@ public class MacTransferService extends BaseService<MacTransfer> {
 	private MacTransferMapper macTransferMapper;
 
 	@Autowired
+	private MacTransferItemMapper macTransferItemMapper;
+
+	@Autowired
 	private MoneyAccountService moneyAccountService;
 
 	@Autowired
@@ -65,6 +72,9 @@ public class MacTransferService extends BaseService<MacTransfer> {
 	@Autowired
 	private MacTransferConvert macTransferConvert;
 
+	@Autowired
+	private MacTransferItemConvert macTransferItemConvert;
+
 	/**
 	 * @desc : 条件查询
 	 * @author : 付斌
@@ -104,42 +114,50 @@ public class MacTransferService extends BaseService<MacTransfer> {
 		macTransfer.setTrfId(codeMap.get("outId").toString()).setTrfNo(codeMap.get("outNote").toString());
 		macTransferMapper.insert(macTransfer);
 
-		// 更新资金账户
-		MoneyAccount moneyAccountForUpdate = moneyAccountMapper.selectByIdForUpdate(macTransfer.getTrfOutMac());
-		// 如果账户不允许为负数
-		if(!moneyAccountForUpdate.getFlgNegative()){
-			// 如果账户余额比转出金额小,就不允许转出
-			if(moneyAccountForUpdate.getBalance().compareTo(macTransfer.getAmtTrf()) == -1){
-				throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.RESIDUE_NO_LESS.getMessage());
+		// 明细保存
+		if (macTransferVO.getItemList() != null && macTransferVO.getItemList().size() > 0) {
+			for (MacTransferItemVO macTransferItemVO : macTransferVO.getItemList()) {
+				MacTransferItem macTransferItem = macTransferItemConvert.convertToPo(macTransferItemVO);
+				macTransferItem.setTrfId(macTransfer.getTrfId()).setCpId(macTransfer.getCpId()).setMakeStaff(macTransfer.getMakeStaff());
+				macTransferItemMapper.insert(macTransferItem);
+
+				// 更新资金账户
+				MoneyAccount moneyAccountForUpdate = moneyAccountMapper.selectByIdForUpdate(macTransferItem.getTrfOutMac());
+				// 如果账户不允许为负数
+				if(!moneyAccountForUpdate.getFlgNegative()){
+					// 如果账户余额比转出金额小,就不允许转出
+					if(moneyAccountForUpdate.getBalance().compareTo(macTransferItem.getAmtTrf()) == -1){
+						throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.RESIDUE_NO_LESS.getMessage());
+					}
+				}
+
+				// 插入转出流水
+				MoneyAccountItem moneyAccountItem = new MoneyAccountItem();
+				moneyAccountItem.setMacId(macTransferItem.getTrfOutMac()).setFlowType(Constant.FlowType.ZHUAN_ZHANG.getName())
+						.setInvoiceId(macTransferItem.getItemId()).setAmtInflow(macTransferItem.getAmtTrf().negate()).setAccDate(macTransfer.getAccDate())
+						.setMakeStaff(macTransferVO.getMakeStaff()).setCpId(macTransfer.getCpId());
+				moneyAccountItemMapper.insert(moneyAccountItem);
+
+				MoneyAccount moneyAccountUpdate = new MoneyAccount();
+				moneyAccountUpdate.setBalance(moneyAccountForUpdate.getBalance().subtract(macTransferItem.getAmtTrf()))
+						.setMacId(moneyAccountForUpdate.getMacId());
+				moneyAccountService.updateByUuid(moneyAccountUpdate);
+
+				// 插入转入流水
+				moneyAccountItem = new MoneyAccountItem();
+				moneyAccountItem.setMacId(macTransferItem.getTrfInMac()).setFlowType(Constant.FlowType.ZHUAN_ZHANG.getName())
+						.setInvoiceId(macTransferItem.getItemId()).setAmtInflow(macTransferItem.getAmtTrf()).setAccDate(macTransfer.getAccDate())
+						.setMakeStaff(macTransferVO.getMakeStaff()).setCpId(macTransfer.getCpId());
+				moneyAccountItemMapper.insert(moneyAccountItem);
+
+				// 更新资金账户
+				moneyAccountForUpdate = moneyAccountMapper.selectByIdForUpdate(macTransferItem.getTrfInMac());
+				moneyAccountUpdate = new MoneyAccount();
+				moneyAccountUpdate.setBalance(moneyAccountForUpdate.getBalance().add(macTransferItem.getAmtTrf()))
+						.setMacId(moneyAccountForUpdate.getMacId());
+				moneyAccountService.updateByUuid(moneyAccountUpdate);
 			}
 		}
-
-		// 插入转出流水
-		MoneyAccountItem moneyAccountItem = new MoneyAccountItem();
-		moneyAccountItem.setMacId(macTransfer.getTrfOutMac()).setFlowType(Constant.FlowType.ZHUAN_ZHANG.getName())
-				.setInvoiceId(macTransfer.getTrfId()).setAmtInflow(macTransfer.getAmtTrf().negate()).setAccDate(macTransfer.getAccDate())
-				.setMakeStaff(macTransferVO.getMakeStaff()).setCpId(macTransfer.getCpId());
-		moneyAccountItemMapper.insert(moneyAccountItem);
-
-		MoneyAccount moneyAccountUpdate = new MoneyAccount();
-		moneyAccountUpdate.setBalance(moneyAccountForUpdate.getBalance().subtract(macTransfer.getAmtTrf()))
-				.setMacId(moneyAccountForUpdate.getMacId());
-		moneyAccountService.updateByUuid(moneyAccountUpdate);
-
-		// 插入转入流水
-		moneyAccountItem = new MoneyAccountItem();
-		moneyAccountItem.setMacId(macTransfer.getTrfInMac()).setFlowType(Constant.FlowType.ZHUAN_ZHANG.getName())
-				.setInvoiceId(macTransfer.getTrfId()).setAmtInflow(macTransfer.getAmtTrf()).setAccDate(macTransfer.getAccDate())
-				.setMakeStaff(macTransferVO.getMakeStaff()).setCpId(macTransfer.getCpId());
-		moneyAccountItemMapper.insert(moneyAccountItem);
-
-		// 更新资金账户
-		moneyAccountForUpdate = moneyAccountMapper.selectByIdForUpdate(macTransfer.getTrfInMac());
-		moneyAccountUpdate = new MoneyAccount();
-		moneyAccountUpdate.setBalance(moneyAccountForUpdate.getBalance().add(macTransfer.getAmtTrf()))
-				.setMacId(moneyAccountForUpdate.getMacId());
-		moneyAccountService.updateByUuid(moneyAccountUpdate);
-
 		return ResponseResultUtil.success();
 	}
 
@@ -152,41 +170,57 @@ public class MacTransferService extends BaseService<MacTransfer> {
 			rollbackFor = {Exception.class}
 	)
 	public ResponseResultVO<?> update(MacTransferVO macTransferVO) {
-		MacTransfer macTransferForUpdate = macTransferMapper.selectByIdForUpdate(macTransferVO.getTrfId());
+		// 将之前的明细全部删除
+		List<MacTransferItem> MacTransferItemOriginalList = macTransferItemMapper.selectByZIdForUpdate(macTransferVO.getTrfId());
 		// 需要重新计算的资金账户
 		List<String> macList = new ArrayList<>();
-		macList.add(macTransferForUpdate.getTrfOutMac());
-		macList.add(macTransferForUpdate.getTrfInMac());
-
-		// 删除账户流水
-		moneyAccountItemMapper.deleteByInvoiceId(macTransferVO.getTrfId());
+		for (MacTransferItem macTransferItem : MacTransferItemOriginalList) {
+			// 删除收付款明细
+			macTransferItemMapper.deleteById(macTransferItem.getItemId());
+			// 删除账户流水
+			moneyAccountItemMapper.deleteByInvoiceId(macTransferItem.getItemId());
+
+			if (!macList.contains(macTransferItem.getTrfOutMac())) {
+				macList.add(macTransferItem.getTrfOutMac());
+			}
+			if (!macList.contains(macTransferItem.getTrfOutMac())) {
+				macList.add(macTransferItem.getTrfOutMac());
+			}
+		}
 
+		// 新增明细
+		if (macTransferVO.getItemList() != null && macTransferVO.getItemList().size() > 0) {
+			for (MacTransferItemVO macTransferItemVO : macTransferVO.getItemList()) {
+				MacTransferItem macTransferItem = macTransferItemConvert.convertToPo(macTransferItemVO);
+				macTransferItem.setItemId(null);
+				macTransferItemMapper.insert(macTransferItem);
+
+				// 插入转出流水
+				MoneyAccountItem moneyAccountItem = new MoneyAccountItem();
+				moneyAccountItem.setMacId(macTransferItem.getTrfOutMac()).setFlowType(Constant.FlowType.ZHUAN_ZHANG.getName())
+						.setInvoiceId(macTransferItem.getItemId()).setAmtInflow(macTransferItem.getAmtTrf().negate()).setAccDate(macTransferVO.getAccDate())
+						.setMakeStaff(macTransferVO.getMakeStaff()).setCpId(macTransferVO.getCpId());
+				moneyAccountItemMapper.insert(moneyAccountItem);
+
+				// 插入转入流水
+				moneyAccountItem = new MoneyAccountItem();
+				moneyAccountItem.setMacId(macTransferItem.getTrfInMac()).setFlowType(Constant.FlowType.ZHUAN_ZHANG.getName())
+						.setInvoiceId(macTransferItem.getItemId()).setAmtInflow(macTransferItem.getAmtTrf()).setAccDate(macTransferVO.getAccDate())
+						.setMakeStaff(macTransferVO.getMakeStaff()).setCpId(macTransferVO.getCpId());
+				moneyAccountItemMapper.insert(moneyAccountItem);
+
+				if (!macList.contains(macTransferItem.getTrfOutMac())) {
+					macList.add(macTransferItem.getTrfOutMac());
+				}
+				if (!macList.contains(macTransferItem.getTrfOutMac())) {
+					macList.add(macTransferItem.getTrfOutMac());
+				}
+			}
+		}
 		// 转化实体
 		MacTransfer macTransfer = macTransferConvert.convertToPo(macTransferVO);
 		super.updateByUuid(macTransfer);
 
-		// 插入转出流水
-		MoneyAccountItem moneyAccountItem = new MoneyAccountItem();
-		moneyAccountItem.setMacId(macTransfer.getTrfOutMac()).setFlowType(Constant.FlowType.ZHUAN_ZHANG.getName())
-				.setInvoiceId(macTransfer.getTrfId()).setAmtInflow(macTransfer.getAmtTrf().negate()).setAccDate(macTransfer.getAccDate())
-				.setMakeStaff(macTransferVO.getMakeStaff()).setCpId(macTransfer.getCpId());
-		moneyAccountItemMapper.insert(moneyAccountItem);
-
-		if (!macList.contains(macTransfer.getTrfOutMac())) {
-			macList.add(macTransfer.getTrfOutMac());
-		}
-
-		// 插入转入流水
-		moneyAccountItem = new MoneyAccountItem();
-		moneyAccountItem.setMacId(macTransfer.getTrfInMac()).setFlowType(Constant.FlowType.ZHUAN_ZHANG.getName())
-				.setInvoiceId(macTransfer.getTrfId()).setAmtInflow(macTransfer.getAmtTrf()).setAccDate(macTransfer.getAccDate())
-				.setMakeStaff(macTransferVO.getMakeStaff()).setCpId(macTransfer.getCpId());
-		moneyAccountItemMapper.insert(moneyAccountItem);
-
-		if (!macList.contains(macTransfer.getTrfInMac())) {
-			macList.add(macTransfer.getTrfInMac());
-		}
-
 		// 更新账户余额
 		for (String macId : macList) {
 			accountService.updateMac(macId);
@@ -207,12 +241,28 @@ public class MacTransferService extends BaseService<MacTransfer> {
 			throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISFLGVALID_FALSE.getMessage());
 		}
 
-		// 删除账户流水
-		moneyAccountItemMapper.deleteByInvoiceId(id);
-
+		// 将之前的明细全部删除
+		List<MacTransferItem> MacTransferItemOriginalList = macTransferItemMapper.selectByZIdForUpdate(id);
 		// 需要重新计算的资金账户
-		accountService.updateMac(macTransferForUpdate.getTrfOutMac());
-		accountService.updateMac(macTransferForUpdate.getTrfInMac());
+		List<String> macList = new ArrayList<>();
+		for (MacTransferItem macTransferItem : MacTransferItemOriginalList) {
+			// 删除收付款明细
+			macTransferItemMapper.deleteById(macTransferItem.getItemId());
+			// 删除账户流水
+			moneyAccountItemMapper.deleteByInvoiceId(macTransferItem.getItemId());
+
+			if (!macList.contains(macTransferItem.getTrfOutMac())) {
+				macList.add(macTransferItem.getTrfOutMac());
+			}
+			if (!macList.contains(macTransferItem.getTrfOutMac())) {
+				macList.add(macTransferItem.getTrfOutMac());
+			}
+		}
+
+		// 更新账户余额
+		for (String macId : macList) {
+			accountService.updateMac(macId);
+		}
 
 		// 作废
 		MacTransfer macTransferUpdate = new MacTransfer();

+ 53 - 9
src/main/java/com/dk/mdm/service/mst/MoneyAccountService.java

@@ -7,9 +7,11 @@ import com.dk.common.model.pojo.PageList;
 import com.dk.common.response.ResponseResultUtil;
 import com.dk.common.response.ResponseResultVO;
 import com.dk.mdm.infrastructure.convert.mst.MoneyAccountConvert;
+import com.dk.mdm.mapper.mac.MacTransferItemMapper;
 import com.dk.mdm.mapper.mac.MacTransferMapper;
 import com.dk.mdm.mapper.mst.MoneyAccountItemMapper;
 import com.dk.mdm.model.pojo.mac.MacTransfer;
+import com.dk.mdm.model.pojo.mac.MacTransferItem;
 import com.dk.mdm.model.pojo.mst.MoneyAccount;
 import com.dk.mdm.mapper.mst.MoneyAccountMapper;
 import com.dk.common.service.BaseService;
@@ -20,6 +22,7 @@ import com.dk.mdm.model.response.mst.MoneyAccountResponse;
 import com.dk.mdm.model.vo.mst.MoneyAccountVO;
 import com.dk.mdm.service.common.CommonService;
 import com.dk.mdm.service.mac.AccountService;
+import com.dk.mdm.service.mac.MacTransferItemService;
 import com.dk.mdm.service.mac.MacTransferService;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -53,9 +56,15 @@ public class MoneyAccountService extends BaseService<MoneyAccount> {
 	private MacTransferService macTransferService;
 
 	@Autowired
+	private MacTransferItemService macTransferItemService;
+
+	@Autowired
 	private MoneyAccountMapper moneyAccountMapper;
 
 	@Autowired
+	private MacTransferItemMapper macTransferItemMapper;
+
+	@Autowired
 	private MoneyAccountItemService moneyAccountItemService;
 
 	@Autowired
@@ -139,14 +148,19 @@ public class MoneyAccountService extends BaseService<MoneyAccount> {
 		codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.MACTRANSFER.getName(),true);
 		macTransfer.setTrfId(codeMap.get("outId").toString()).setTrfNo(codeMap.get("outNote").toString())
 			.setTrfType(0).setOrgId(moneyAccountVO.getOrgId()).setStaffId(moneyAccountVO.getStaffId())
-			.setTrfInMac(moneyAccount.getMacId()).setAmtTrf(moneyAccount.getBalance()).setAccDate(moneyAccount.getAccDate())
-			.setMakeStaff(moneyAccountVO.getMakeStaff()).setCpId(moneyAccount.getCpId());
+			.setAccDate(moneyAccount.getAccDate()).setMakeStaff(moneyAccountVO.getMakeStaff()).setCpId(moneyAccount.getCpId());
 		macTransferMapper.insert(macTransfer);
 
+		// 插入资金转账明细表
+		MacTransferItem macTransferItem = new MacTransferItem();
+		macTransferItem.setTrfId(macTransfer.getTrfId()).setTrfInMac(moneyAccount.getMacId()).setAmtTrf(moneyAccount.getBalance())
+				.setCpId(macTransfer.getCpId()).setMakeStaff(macTransfer.getMakeStaff());
+		macTransferItemMapper.insert(macTransferItem);
+
 		// 插入资金流水
 		MoneyAccountItem moneyAccountItem = new MoneyAccountItem();
 		moneyAccountItem.setMacId(moneyAccount.getMacId()).setFlowType(Constant.FlowType.ZHUAN_ZHANG.getName())
-				.setInvoiceId(macTransfer.getTrfId()).setAmtInflow(moneyAccount.getBalance()).setAccDate(moneyAccount.getAccDate())
+				.setInvoiceId(macTransferItem.getItemId()).setAmtInflow(moneyAccount.getBalance()).setAccDate(moneyAccount.getAccDate())
 				.setMakeStaff(moneyAccountVO.getMakeStaff()).setCpId(moneyAccount.getCpId());
 		moneyAccountItemMapper.insert(moneyAccountItem);
 
@@ -170,14 +184,44 @@ public class MoneyAccountService extends BaseService<MoneyAccount> {
 		// 赋值期初
 		moneyAccount.setBalance(moneyAccountVO.getInitBalance());
 
-		// 更新资金转账
-		MacTransfer macTransfer = macTransferMapper.selectByInMacIdForUpdate(moneyAccount.getMacId());
-		MacTransfer MacTransferUpdate = new MacTransfer();
-		MacTransferUpdate.setAmtTrf(moneyAccount.getBalance()).setAccDate(moneyAccount.getAccDate()).setTrfId(macTransfer.getTrfId());
-		macTransferService.updateByUuid(MacTransferUpdate);
+		// 更新资金转账明细
+		MacTransferItem macTransferItemForUpdate = macTransferItemMapper.selectByInMacIdForUpdate(moneyAccount.getMacId());
+		// 有资金转账就更新,没有就新建
+		if(macTransferItemForUpdate != null){
+			MacTransferItem macTransferItemUpdate = new MacTransferItem();
+			macTransferItemUpdate.setAmtTrf(moneyAccount.getBalance()).setItemId(macTransferItemForUpdate.getItemId());
+			macTransferItemService.updateByUuid(macTransferItemUpdate);
+
+			// 更新资金转账账务日期
+			MacTransfer macTransferUpdate = new MacTransfer();
+			macTransferUpdate.setAccDate(moneyAccountVO.getAccDate()).setTrfId(macTransferItemForUpdate.getTrfId());
+			macTransferService.updateByUuid(macTransferUpdate);
+		}else{
+			// 插入资金转账表
+			MacTransfer macTransfer = new MacTransfer();
+			Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.MACTRANSFER.getName(),true);
+			macTransfer.setTrfId(codeMap.get("outId").toString()).setTrfNo(codeMap.get("outNote").toString())
+					.setTrfType(0).setOrgId(moneyAccountVO.getOrgId()).setStaffId(moneyAccountVO.getStaffId())
+					.setAccDate(moneyAccount.getAccDate()).setMakeStaff(moneyAccountVO.getMakeStaff()).setCpId(moneyAccount.getCpId());
+			macTransferMapper.insert(macTransfer);
+
+			// 插入资金转账明细表
+			MacTransferItem macTransferItem = new MacTransferItem();
+			macTransferItem.setTrfId(macTransfer.getTrfId()).setTrfInMac(moneyAccount.getMacId()).setAmtTrf(moneyAccount.getBalance())
+					.setCpId(macTransfer.getCpId()).setMakeStaff(macTransfer.getMakeStaff());
+			macTransferItemMapper.insert(macTransferItem);
+			macTransferItemForUpdate = macTransferItem;
+
+			// 插入资金流水
+			MoneyAccountItem moneyAccountItem = new MoneyAccountItem();
+			moneyAccountItem.setMacId(moneyAccount.getMacId()).setFlowType(Constant.FlowType.ZHUAN_ZHANG.getName())
+					.setInvoiceId(macTransferItem.getItemId()).setAmtInflow(moneyAccount.getBalance()).setAccDate(moneyAccount.getAccDate())
+					.setMakeStaff(moneyAccountVO.getMakeStaff()).setCpId(moneyAccount.getCpId());
+			moneyAccountItemMapper.insert(moneyAccountItem);
+		}
 
 		// 更新资金流水
-		List<MoneyAccountItem> moneyAccountItemList = moneyAccountItemMapper.selectByInvoiceIdForUpdate(macTransfer.getTrfId());
+		List<MoneyAccountItem> moneyAccountItemList = moneyAccountItemMapper.selectByInvoiceIdForUpdate(macTransferItemForUpdate.getItemId());
 		MoneyAccountItem moneyAccountItemUpdate = new MoneyAccountItem();
 		moneyAccountItemUpdate.setAmtInflow(moneyAccount.getBalance()).setAccDate(moneyAccount.getAccDate()).setItemId(moneyAccountItemList.get(0).getItemId());
 		moneyAccountItemService.updateByUuid(moneyAccountItemUpdate);