Переглянути джерело

财务实收款认领删除逻辑修复

wucl 11 місяців тому
батько
коміт
8e41575479

+ 2 - 0
dao/src/main/java/com/dayou/mapper/FinanceClaimMapper.java

@@ -28,6 +28,8 @@ public interface FinanceClaimMapper extends CustomBaseMapper<FinanceClaim> {
 
     BigDecimal getTotalClaimAmountByProductionFundId(@Param("productionFundId") Long productionFundId);
 
+    BigDecimal getTotalClaimAmountByOrderFundId(@Param("orderFundId") Long productionFundId);
+
     BigDecimal residueAmount(@Param("financeFundId") Long financeFundId);
 
     Page<RealFundMajorStatVO> majorStat(Page page,@Param("majorStat")  RealFundMajorStatVO majorStat);

+ 2 - 0
dao/src/main/java/com/dayou/mapper/ProductionFundMapper.java

@@ -24,4 +24,6 @@ public interface ProductionFundMapper extends CustomBaseMapper<ProductionFund> {
     List<ProductionFund> deepQueryProductionFund(@Param("majorIds") List<Long> majorIds);
 
     void updateRealAmount(@Param("id") Long id, @Param("thisTimeAmount") BigDecimal thisTimeAmount);
+
+    void updateProductionRealAmount(@Param("productionFundId") Long productionFundId, @Param("rollbackAmount") BigDecimal rollbackAmount);
 }

+ 6 - 2
dao/src/main/resources/mapper/FinanceClaimMapper.xml

@@ -51,6 +51,10 @@
         select ifnull(sum(claim_amount),0) from finance_claim where production_fund_id = #{productionFundId} and deleted = 0
     </select>
 
+    <select id="getTotalClaimAmountByOrderFundId" parameterType="java.lang.Long" resultType="java.math.BigDecimal">
+        select ifnull(sum(claim_amount),0) from finance_claim where order_fund_id = #{orderFundId} and deleted = 0
+    </select>
+
     <select id="residueAmount" parameterType="java.lang.Long" resultType="java.math.BigDecimal">
         SELECT amount -( SELECT IFNULL( sum( claim_amount ), 0 ) FROM `finance_claim` WHERE deleted = 0 AND real_fund_id = #{financeFundId} ) AS residueAmount
         FROM
@@ -302,11 +306,11 @@
             ) f
                 INNER JOIN finance_claim fc ON fc.order_fund_id = f.oId
                 LEFT JOIN personal p ON f.business_id = p.id
-                LEFT JOIN USER u ON u.id = p.client_manager_id
+                LEFT JOIN user u ON u.id = p.client_manager_id
                 LEFT JOIN customer_company cc1 ON cc1.id = p.clientele_id
                 LEFT JOIN customer_company cc2 ON cc2.id = p.clientele_sub_id
                 LEFT JOIN finance_real_fund frf ON frf.id = fc.real_fund_id
-                LEFT JOIN USER u2 ON u2.id = fc.claim_user_id
+                LEFT JOIN user u2 ON u2.id = fc.claim_user_id
                 LEFT JOIN personal_target pt ON pt.personal_id = p.id
         WHERE
             p.deleted = 0

+ 3 - 0
dao/src/main/resources/mapper/FinanceRealFundMapper.xml

@@ -49,6 +49,9 @@
         <if test="vo!=null and vo.notFinished">
             and  ifnull(t.ca,0) &lt; frf.amount
         </if>
+        <if test="vo!=null and !vo.notFinished">
+            and  ifnull(t.ca,0) &gt;= frf.amount
+        </if>
         <if test="keyword!=null and keyword!='' ">
             and (
             frf.payer like concat ('%',#{keyword},'%')

+ 4 - 0
dao/src/main/resources/mapper/ProductionFundMapper.xml

@@ -56,4 +56,8 @@
     <update id="updateRealAmount">
         update production_fund set real_amount = (ifnull(real_amount,0) + #{thisTimeAmount}) where id = #{id} and deleted = 0
     </update>
+
+    <update id="updateProductionRealAmount">
+        update production_fund set real_amount = real_amount-#{rollbackAmount} where id = #{productionFundId} and deleted = 0
+    </update>
 </mapper>

+ 2 - 0
service/src/main/java/com/dayou/service/IFinanceClaimService.java

@@ -42,6 +42,8 @@ public interface IFinanceClaimService extends IService<FinanceClaim> {
 
         BigDecimal getTotalClaimAmountByProductionFundId(Long id);
 
+        BigDecimal getTotalClaimAmountByOrderFundId(Long id);
+
     Boolean personalClaimByTemplate(MultipartFile file,Long financeFundId);
 
     Boolean doClaimByTemplateDTO(List<PersonalClaimDTO> personalClaimDTOS, Long financeFundId, BigDecimal residueAmount);

+ 1 - 1
service/src/main/java/com/dayou/service/IOrderFundService.java

@@ -31,5 +31,5 @@ public interface IOrderFundService extends IService<OrderFund> {
         BigDecimal residueNotAllotAmount(Long orderFundId);
 
 
-
+        void updateRealAmount(Long orderFundId);
 }

+ 3 - 0
service/src/main/java/com/dayou/service/IProductionFundService.java

@@ -1,4 +1,5 @@
 package com.dayou.service;
+import com.dayou.entity.FinanceClaim;
 import com.dayou.entity.ProductionFund;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -36,4 +37,6 @@ public interface IProductionFundService extends IService<ProductionFund> {
         BigDecimal calculateStandardAmount(BigDecimal evaluateAmount);
 
         BigDecimal getProductionRealAmountByProductionNo(String productionNo);
+
+        void updateProductionRealAmount(Long productionFundId , BigDecimal rollbackAmount);
 }

+ 28 - 5
service/src/main/java/com/dayou/service/impl/FinanceClaimServiceImpl.java

@@ -4,14 +4,12 @@ import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.dayou.common.BaseEntity;
 import com.dayou.dto.OrderReportDTO;
 import com.dayou.dto.PersonalClaimDTO;
 import com.dayou.dto.RealFundAssetsStatDTO;
-import com.dayou.entity.FinanceClaim;
-import com.dayou.entity.FinanceRealFund;
-import com.dayou.entity.OrderFund;
-import com.dayou.entity.Personal;
+import com.dayou.entity.*;
 import com.dayou.enums.MainBusinessEnum;
 import com.dayou.exception.ErrorCode;
 import com.dayou.mapper.FinanceClaimMapper;
@@ -73,6 +71,9 @@ public class FinanceClaimServiceImpl extends ServiceImpl<FinanceClaimMapper, Fin
     @Autowired
     private IFinanceClaimService financeClaimService;
 
+    @Autowired
+    private IOrderFundAllotService orderFundAllotService;
+
     @Override
     @SuppressWarnings("unchecked")
     public Page<FinanceClaim> selectPage(Page page,FinanceClaim financeClaim){
@@ -138,7 +139,22 @@ public class FinanceClaimServiceImpl extends ServiceImpl<FinanceClaimMapper, Fin
         //逻辑删除
         FinanceClaim xFinanceClaim = this.getById(id);
         this.removeById(id);
-        productionFundService.updateRealFundForProduction(xFinanceClaim.getOrderFundId());
+        //重新统计订单收款
+        orderFundService.updateRealAmount(xFinanceClaim.getOrderFundId());
+
+        //回滚直接认领到产品的金额
+        if (xFinanceClaim.getProductionFundId()!=null){
+            productionFundService.updateProductionRealAmount(xFinanceClaim.getProductionFundId(),xFinanceClaim.getClaimAmount());
+        }
+        //如果是先认领到订单,后分配到产品
+        List<OrderFundAllot> allots = orderFundAllotService.list(new LambdaQueryWrapper<OrderFundAllot>().eq(OrderFundAllot::getOrderFundId, xFinanceClaim.getOrderFundId()));
+        if (CollectionUtil.isNotEmpty(allots)){
+            allots.stream().forEach(x->{
+                productionFundService.updateProductionRealAmount(x.getProductionFundId(),x.getAllotAmount());
+            });
+            orderFundAllotService.removeByIds(allots.stream().map(BaseEntity::getId).collect(Collectors.toList()));
+        }
+
         return Boolean.TRUE;
     }
 
@@ -153,6 +169,13 @@ public class FinanceClaimServiceImpl extends ServiceImpl<FinanceClaimMapper, Fin
         BigDecimal totalClaimAmount =  financeClaimMapper.getTotalClaimAmountByProductionFundId(id);
         return totalClaimAmount;
     }
+
+    @Override
+    public BigDecimal getTotalClaimAmountByOrderFundId(Long id) {
+        BigDecimal totalClaimAmount =  financeClaimMapper.getTotalClaimAmountByOrderFundId(id);
+        return totalClaimAmount;
+    }
+
     @Override
     public synchronized Boolean personalClaimByTemplate(MultipartFile file,Long financeFundId) {
         //检查这笔实收款剩余金额

+ 15 - 0
service/src/main/java/com/dayou/service/impl/OrderFundServiceImpl.java

@@ -1,8 +1,11 @@
 package com.dayou.service.impl;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.dayou.common.BaseEntity;
 import com.dayou.entity.OrderFund;
+import com.dayou.mapper.FinanceClaimMapper;
 import com.dayou.mapper.OrderFundMapper;
+import com.dayou.service.IFinanceClaimService;
 import com.dayou.service.IOrderFundService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -43,6 +46,9 @@ public class OrderFundServiceImpl extends ServiceImpl<OrderFundMapper, OrderFund
     @Autowired
     private OrderFundMapper orderFundMapper;
 
+    @Autowired
+    private IFinanceClaimService financeClaimService;
+
     @Override
     @SuppressWarnings("unchecked")
     public Page<OrderFund> selectPage(Page page,OrderFund orderFund){
@@ -76,4 +82,13 @@ public class OrderFundServiceImpl extends ServiceImpl<OrderFundMapper, OrderFund
         BigDecimal residue = orderFundMapper.residueNotAllotAmount(orderFundId);
         return residue;
     }
+
+    @Override
+    public void updateRealAmount(Long orderFundId) {
+        BigDecimal totalAmount = financeClaimService.getTotalClaimAmountByOrderFundId(orderFundId);
+        this.update(new LambdaUpdateWrapper<OrderFund>().set(OrderFund::getRealAmount,totalAmount)
+                .eq(BaseEntity::getId,orderFundId));
+    }
+
+
 }

+ 8 - 0
service/src/main/java/com/dayou/service/impl/ProductionFundServiceImpl.java

@@ -3,6 +3,7 @@ package com.dayou.service.impl;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.dayou.common.BaseEntity;
+import com.dayou.entity.FinanceClaim;
 import com.dayou.entity.OrderFund;
 import com.dayou.entity.ProductionFund;
 import com.dayou.mapper.ProductionFundMapper;
@@ -63,6 +64,8 @@ public class ProductionFundServiceImpl extends ServiceImpl<ProductionFundMapper,
 
     @Autowired
     private IOrderFundService orderFundService;
+    @Autowired
+    private ProductionFundMapper productionFundMapper;
 
     @Override
     @SuppressWarnings("unchecked")
@@ -170,4 +173,9 @@ public class ProductionFundServiceImpl extends ServiceImpl<ProductionFundMapper,
             return BigDecimal.ZERO;
         }
     }
+
+    @Override
+    public void updateProductionRealAmount(Long productionFundId , BigDecimal rollbackAmount) {
+        productionFundMapper.updateProductionRealAmount(productionFundId,rollbackAmount);
+    }
 }