Browse Source

统计列表修改

anderx 2 years ago
parent
commit
49e6ed1f7f

+ 2 - 0
src/main/java/com/goafanti/common/dao/ExpenseAccountExamineMapper.java

@@ -38,4 +38,6 @@ public interface ExpenseAccountExamineMapper {
      * @return
      */
     List<OutExpenseAccountLog> selectNotExamineByEaidAndProcessStatus(@Param("id") Integer id, @Param("processStatus") Integer processStatus);
+
+
 }

+ 3 - 1
src/main/java/com/goafanti/common/dao/ExpenseAccountMapper.java

@@ -30,5 +30,7 @@ public interface ExpenseAccountMapper {
     List<OutExpenseAccountStatistics> selectStatistics(@Param("name") String name, @Param("depId") String depId,
                                                        @Param("startTime") String startTime, @Param("endTime") String endTime);
 
-    List<ExpenseAccount> selectByDebit(Integer debitId);
+    List<ExpenseAccount> selectByDebitId(Integer debitId);
+
+
 }

+ 1 - 0
src/main/java/com/goafanti/common/mapper/ExpenseAccountExamineMapper.xml

@@ -144,4 +144,5 @@
     where eaid = #{id} and process_status> #{processStatus}
     group by process_status
   </select>
+
 </mapper>

+ 4 - 2
src/main/java/com/goafanti/common/mapper/ExpenseAccountMapper.xml

@@ -475,9 +475,10 @@
   <select id="selectStatistics" resultType="com.goafanti.expenseAccount.bo.OutExpenseAccountStatistics">
     select a.aid,a.aname ,if(a.`type` &lt;4 ,1,0)bx,if(a.`type`=4 ,1,0)jz,if(a.`type`=5 ,1,0)dk,a.debit_id debitId ,a.target_type targetType ,
     if(a.`type`&lt; 4 ,a.total_amount ,0)bxAmount,if(a.`type`=4 ,a.total_amount ,0)jzAmount,if(a.`type`=5,a.total_amount,0)dkAmount,
-    if(a.status&lt; 2,1,0)wshs,if(a.status=3,1,0)bhs
+    ifnull(a2.total_amount,0) bxdkAmount,if(a.status&lt; 2,1,0)wshs,if(a.status=3,1,0)bhs
     from expense_account a left join department b on a.apply_dep =b.id left join department c on a.pay_dep =c.id
     left join expense_account_private d on a.eaaid=d.id left join t_order_new o on a.order_no =o.order_no
+    left join expense_account a2 on a.debit_id =a2.id
     left join t_order_mid tm on a.order_no =tm.order_no left join admin ad on a.aid=ad.id
     where 1=1
     <if test="name != null">
@@ -491,10 +492,11 @@
     </if>
 
   </select>
-  <select id="selectByDebit" parameterType="java.lang.Integer" resultMap="BaseResultMap">
+  <select id="selectByDebitId" parameterType="java.lang.Integer" resultMap="BaseResultMap">
     select
     <include refid="Base_Column_List" />
     from expense_account
     where debit_id = #{debitId}
   </select>
+
 </mapper>

+ 10 - 0
src/main/java/com/goafanti/expenseAccount/bo/OutExpenseAccountStatistics.java

@@ -39,6 +39,8 @@ public class OutExpenseAccountStatistics {
      */
     private BigDecimal dkAmount;
 
+    private BigDecimal bxdkAmount;
+
     private BigDecimal TotalAmount;
     /**
      * 未审核数
@@ -77,6 +79,14 @@ public class OutExpenseAccountStatistics {
 
     }
 
+    public BigDecimal getBxdkAmount() {
+        return bxdkAmount;
+    }
+
+    public void setBxdkAmount(BigDecimal bxdkAmount) {
+        this.bxdkAmount = bxdkAmount;
+    }
+
     public String getAname() {
         return aname;
     }

+ 2 - 2
src/main/java/com/goafanti/expenseAccount/controller/ExpenseAccountController.java

@@ -52,12 +52,12 @@ public class ExpenseAccountController extends CertifyApiController {
     public Result update( InputExpenseAccount in ){
         Result res =new Result();
         in.setAid(TokenManager.getAdminId());
-
         //只修改状态
         if (in.getUpdateType()==1){
             res.setData(expenseAccountService.updateType(in));
         }else {
-        res.setData(expenseAccountService.update(in));
+
+            res.setData(expenseAccountService.update(in));
         }
         return res;
     }

+ 37 - 19
src/main/java/com/goafanti/expenseAccount/service/impl/ExpenseAccountServiceImpl.java

@@ -164,6 +164,9 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
         String aid=TokenManager.getAdminId();
         addExpenseAccountLog(in.getId(),status,in.getProcessStatus(),aid,str);
         Admin admin = adminMapper.selectByPrimaryKey(aid);
+        if(in.getStatus()==1){
+            in.setProcessStatus(1);
+        }
         if (admin.getSuperiorId()==null||admin.getId().equals(admin.getSuperiorId())){
             String str2=String.format("重复审核人跳过[%s]。",EAProcessStatus.getDesc(in.getProcessStatus()));
             Date date=new Date();
@@ -225,16 +228,13 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
         }else if (useEA.getStatus()==3){
             addExpenseAccountLogAndNoticEmail(in,4,"修改并发起审核");
         }
-        if(in.getStatus()==1){
-            in.setProcessStatus(1);
-        }
+
         if (in.getOrderNo()==null){
             in.setTargetType(0);
         }else {
             in.setTargetType(1);
         }
-        in.setSettlementAmount(useEA.getSettlementAmount());
-        //计算本单已扣金额
+        //计算本单已扣金额  如果有选择借支单,则需要修改借支状态
         if (in.getDebitId()!=null){
             //如果以前没有选择借支,修改报销和借支数据
             if (useEA.getDebitId()==null){
@@ -252,12 +252,24 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
 
     private void pushresettingDebit(InputExpenseAccount in, Integer debitId) {
         ExpenseAccount debit = expenseAccountMapper.selectByPrimaryKey(debitId);
+        List<ExpenseAccount> list = expenseAccountMapper.selectByDebitId(debitId);
         ExpenseAccount newdebit=new ExpenseAccount();
-        newdebit.setSettlementAmount(debit.getSettlementAmount().subtract(in.getSettlementAmount()));
-        if (newdebit.getSettlementAmount().compareTo(new BigDecimal(0))==0){
+        newdebit.setId(debitId);
+        int  minStatus=0;
+        BigDecimal count=new BigDecimal(0);
+        for (ExpenseAccount e : list) {
+            if (e.getStatus()>0)minStatus=e.getStatus();
+            if (!in.getId().equals(e.getId())){
+                count=count.add(e.getSettlementAmount());
+            }
+        }
+        newdebit.setSettlementAmount(count);
+        if (count.compareTo(new BigDecimal(0))==0){
             newdebit.setLiquidationStatus(0);
-        }else {
+        }else if (count.compareTo(debit.getTotalAmount())<0){
             newdebit.setLiquidationStatus(1);
+        }else if (count.compareTo(debit.getTotalAmount())==0){
+            newdebit.setLiquidationStatus(2);
         }
         expenseAccountMapper.updateByPrimaryKeySelective(newdebit);
     }
@@ -269,7 +281,7 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
         ExpenseAccount newDebit=new ExpenseAccount();
         newDebit.setId(debit.getId());
         //计算剩余需要支付金额
-        BigDecimal decbitAmount=in.getTotalAmount().subtract(in.getSettlementAmount());
+        BigDecimal decbitAmount=debit.getTotalAmount().subtract(debit.getSettlementAmount());
         //本次金额大于等于需要抵扣金额,则变成完全抵扣,抵扣金额变成本次已付金额
         if (in.getTotalAmount().compareTo(decbitAmount)>0){
             in.setSettlementAmount(decbitAmount);
@@ -332,7 +344,7 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
                 if (useEa.getDebitId()!=null){
                     ExpenseAccount useDebit=expenseAccountMapper.selectByPrimaryKey(useEa.getDebitId());
                     if (useDebit.getLiquidationStatus()==2){
-                        List<ExpenseAccount> expenseAccounts = expenseAccountMapper.selectByDebit(useDebit.getDebitId());
+                        List<ExpenseAccount> expenseAccounts = expenseAccountMapper.selectByDebitId(useDebit.getDebitId());
                         boolean flag=true;
                         for (ExpenseAccount expenseAccount : expenseAccounts) {
                             if(expenseAccount.getStatus()!=2){
@@ -507,9 +519,15 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
         }
         if (useEa.getDebitId()!=null){
             ExpenseAccount debit = expenseAccountMapper.selectByPrimaryKey(useEa.getDebitId());
-            if (debit!=null&&debit.getTotalAmount()!=null){
-                useEa.setDebitTotalAmount(debit.getTotalAmount().subtract(debit.getSettlementAmount()));
+            List<ExpenseAccount> list1 = expenseAccountMapper.selectByDebitId(useEa.getDebitId());
+            BigDecimal count =debit.getTotalAmount();
+            for (ExpenseAccount e : list1) {
+                if (!e.getId().equals(id)){
+                    count.subtract(e.getSettlementAmount());
+                }
             }
+            if (count.compareTo(new BigDecimal(0))<0)count=new BigDecimal(0);
+            useEa.setDebitTotalAmount(count);
         }
         return useEa;
     }
@@ -579,14 +597,14 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
             if (e.getBx()==1){
                 if (e.getDebitId()!=null){
                     e.setDk(1);
-                    e.setDkAmount(e.getBxAmount());
-                }
-                if (e.getTargetType()==0){
-                    e.setGdfyAmount(e.getBxAmount());
-                }else if (e.getTargetType()==1){
-                    e.setBxddAmount(e.getBxAmount());
+                    e.setDkAmount(e.getBxdkAmount());
                 }
             }
+            if (e.getTargetType()==0){
+                e.setGdfyAmount(e.getBxAmount().add(e.getJzAmount()));
+            }else if (e.getTargetType()==1){
+                e.setBxddAmount(e.getBxAmount().add(e.getJzAmount()));
+            }
             //如果不存在就新增
             if (!map.keySet().contains(e.getAid())){
                 List<OutExpenseAccountStatistics> list2=new ArrayList<>();
@@ -601,7 +619,7 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
             List<OutExpenseAccountStatistics> list3 = (List<OutExpenseAccountStatistics>) map.get(s);
             if (!list3.isEmpty()){
                 OutExpenseAccountStatistics out =new OutExpenseAccountStatistics(s);
-            
+
                 for (OutExpenseAccountStatistics e : list3) {
                     if (out.getAname()==null)out.setAname(e.getAname());
                     if (e.getBx()!=null)out.setBx(out.getBx()+e.getBx());