Przeglądaj źródła

Merge branch 'test02' into test

# Conflicts:
#	src/main/java/com/goafanti/common/mapper/ExpenseAccountMapper.xml
#	src/main/java/com/goafanti/expenseAccount/service/impl/ExpenseAccountServiceImpl.java
anderx 2 lat temu
rodzic
commit
3538a92284

+ 2 - 1
src/main/java/com/goafanti/common/dao/ExpenseAccountDetailsMapper.java

@@ -19,9 +19,10 @@ public interface ExpenseAccountDetailsMapper {
 
     int updateByPrimaryKey(ExpenseAccountDetails record);
 
-    BigDecimal selectAmountCountByEAid(Integer id);
 
     List<OutExpenseAccountDetails> selectByEAid(Integer eaid);
 
     void deleteByeaid(Integer updateType);
+
+    Integer selectExpenseAccountById(Integer id);
 }

+ 4 - 0
src/main/java/com/goafanti/common/dao/ExpenseAccountLogMapper.java

@@ -2,6 +2,7 @@ package com.goafanti.common.dao;
 
 import com.goafanti.common.model.ExpenseAccountLog;
 import com.goafanti.expenseAccount.bo.OutExpenseAccountLog;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -21,4 +22,7 @@ public interface ExpenseAccountLogMapper {
     List<OutExpenseAccountLog> selectByEaid(Integer eaid);
 
 
+    void updateUseLogByUseId(@Param("id") Integer id, @Param("useId") Integer useId);
+
+    void deleteByeaid(Integer id);
 }

+ 4 - 0
src/main/java/com/goafanti/common/dao/ExpenseAccountMapper.java

@@ -66,4 +66,8 @@ public interface ExpenseAccountMapper {
     List<MainExpenseAccount> selectSonByMainIds(List<Integer> list);
 
     void updateSonByMainId(Integer id);
+
+    MainExpenseAccount selectbySonId(Integer id);
+
+    Integer selectDeleteIdBySonId(Integer integer);
 }

+ 8 - 6
src/main/java/com/goafanti/common/mapper/ExpenseAccountDetailsMapper.xml

@@ -298,20 +298,22 @@
   </update>
 
 
-  <select id="selectAmountCountByEAid" resultType="java.math.BigDecimal">
-    select ifnull(sum(amount),0)amount  from expense_account_details
-    where eaid = #{id}
-  </select>
+
   <select id="selectByEAid" resultType="com.goafanti.expenseAccount.bo.OutExpenseAccountDetails">
     SELECT id, eaid, `type`, type_other typeOther, date_format(a.start_time,'%Y-%m-%d %H:%i:%S')startTimeStr, date_format(a.end_time,'%Y-%m-%d %H:%i:%S')endTimeStr,
-           start_district startDistrict, end_district endDistrict, amount, vehicle, vehicle_other vehicleOther, remarks,
+           start_district startDistrict, end_district endDistrict, amount,real_Amount realAmount, vehicle, vehicle_other vehicleOther, remarks,
            date_format(a.agree_time,'%Y-%m-%d %H:%i:%S')agreeTimeStr, pay_type payType,invoice_type invoiceType, invoice_no invoiceNo,
            payer_name payerName, open_bank openBank, bank_accounts bankAccounts, open_bank_address openBankAddress, lend_id lendId,
            date_format(a.create_time,'%Y-%m-%d %H:%i:%S')createTimeStr
     FROM expense_account_details a WHERE eaid= #{eaid}
   </select>
-  <delete id="deleteByeaid">
+    <delete id="deleteByeaid">
     delete from expense_account_details
     where eaid = #{id}
   </delete>
+  <select id="selectExpenseAccountById" resultType="java.lang.Integer">
+    select b.id
+    from expense_account_details a left join expense_relationship b on a.eaid =b.ea_id
+    where a.id= #{id}
+  </select>
 </mapper>

+ 12 - 2
src/main/java/com/goafanti/common/mapper/ExpenseAccountLogMapper.xml

@@ -23,6 +23,7 @@
     delete from expense_account_log
     where id = #{id,jdbcType=INTEGER}
   </delete>
+
   <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.goafanti.common.model.ExpenseAccountLog" useGeneratedKeys="true">
     insert into expense_account_log (eaid, process_status, `status`,
       remarks, auditor, create_time
@@ -109,12 +110,21 @@
     where id = #{id,jdbcType=INTEGER}
   </update>
 
-  <select id="selectByEaid" resultType="com.goafanti.expenseAccount.bo.OutExpenseAccountLog">
+
+    <select id="selectByEaid" resultType="com.goafanti.expenseAccount.bo.OutExpenseAccountLog">
     select a.id,a.eaid ,a.status ,a.remarks ,a.auditor ,b.name auditorName,a.process_status processStatus,
            date_format(a.create_time,'%Y-%m-%d %H:%i:%S')createTimeStr
     from expense_account_log a left join admin b on a.auditor =b.id
     where a.eaid= #{eaid}
     order by a.create_time
   </select>
-
+  <update id="updateUseLogByUseId" parameterType="java.lang.Integer">
+    update expense_account_log
+    set eaid = #{id}
+    where eaid = #{useId}
+  </update>
+  <delete id="deleteByeaid" parameterType="java.lang.Integer">
+    delete from expense_account_log
+    where eaid = #{id,jdbcType=INTEGER}
+  </delete>
 </mapper>

+ 27 - 7
src/main/java/com/goafanti/common/mapper/ExpenseAccountMapper.xml

@@ -458,7 +458,7 @@
     <if test="expenseMain ==1">
        a.examine_name examineName,a.check_no checkNo,a.target_type targetType,
     </if>
-    f.name depName,bad.name financeName, date_format(a.create_time,'%Y-%m-%d %H:%i:%S')createTimeStr,a.aname,
+    f.name depName,d2.name financeName, date_format(a.create_time,'%Y-%m-%d %H:%i:%S')createTimeStr,a.aname,
     b.name applyDepName, c.name payDepName
     from expense_account a
     <if test="type !=null">
@@ -468,18 +468,17 @@
       where c.`type` = #{type})x on a.id=x.id
     </if>
     left join admin d on a.aid =d.id left join department f on d.department_id =f.id
-    left join admin d2 on f.finance_id =d2.id
     <if test="expenseMain ==0">
       left join expense_relationship er on a.id=er.ea_id
       left join expense_account mea on  er.id=mea.id
       left join t_order_new e on mea.order_no =e.order_no
       left join department b on mea.apply_dep =b.id left join department c on mea.pay_dep =c.id
-        left join admin bad on  b.expense_finance_id=bad.id
+      left join admin d2 on b.expense_finance_id =d2.id
     </if>
     <if test="expenseMain ==1">
       left join department b on a.apply_dep =b.id left join department c on a.pay_dep =c.id
       left join t_order_new e on a.order_no =e.order_no
-      left join admin bad on  b.expense_finance_id=bad.id
+      left join admin d2 on b.expense_finance_id =d2.id
     </if>
     left join t_order_mid  tm on e.order_no =tm.order_no
     <if test="processStatus ==1">
@@ -911,6 +910,9 @@
           </if>
         </if>
     </if>
+    <if test="roleType == 5">
+      and adDep.finance_id  in (select id from admin where superior_id = #{aid})
+    </if>
     <if test="startTime !=null and endTime !=null ">
       and b.create_time between #{startTime} and #{endTime}
     </if>
@@ -926,9 +928,9 @@
     left join expense_account ea2 on ea2.id=er.ea_id
   </if>
     left join admin ad on b.aid=ad.id left join department adDep on ad.department_id=adDep.id
-    <if test="roleType > 0">
+    <if test="roleType == 1">
       inner join (select eaid ,auditor,min(process_status)`type` from expense_account_examine
-      where auditor= #{aid} and status=0  group by eaid) eae on b.id=eae.eaid
+      where auditor= #{aid} group by eaid) eae on b.id=eae.eaid
     </if>
     <include refid="ExpenseMainSql"/>
   </select>
@@ -945,7 +947,7 @@
     left join t_order_new o on mea.order_no =o.order_no left join t_order_mid tm on o.order_no =tm.order_no
     left join department dep on mea.apply_dep =dep.id
     left join department dep2 on mea.pay_dep =dep2.id  left join  admin ad on a.aid=ad.id
-    left join department dep3 on ad.department_id =dep3.id left join admin ad2 on dep.expense_finance_id=ad2.id
+    left join department dep3 on ad.department_id =dep3.id left join admin ad2 on dep3.finance_id =ad2.id
     where 1=1
    <include refid="ExpenseDetailsSql"/>
     ${page_sql}
@@ -1035,5 +1037,23 @@
       #{id}
     </foreach>
   </select>
+    <select id="selectbySonId" resultMap="MainMap">
+  select b.id id,
+  c.id sonId,c.total_amount sonTotalAmount,c.settlement_amount sonSettlementAmount,c.amount sonAmount,c.real_amount sonRealAmount,
+  c.`type` sonType,c.type_other sonTypeOTher, c.user_names ,c.release_start ,c.release_end,
+  c.attachment_url attachmentUrl,c.secondary_type,c.secondary_type_other
+  from expense_relationship a
+  left join expense_account b on a.id =b.id
+  left join department dep on b.apply_dep =dep.id left join department dep2 on b.pay_dep =dep2.id
+  left join t_order_new o on b.order_no =o.order_no left join expense_account c on a.ea_id =c.id
+  left join admin ad on b.aid=ad.id left join department adDep on ad.department_id=adDep.id
+  where c.id in (#{id})
+  </select>
+  <select id="selectDeleteIdBySonId" resultType="java.lang.Integer">
+    select b.id
+    from expense_account a left join expense_relationship b on a.id =b.ea_id
+                           left join expense_account c on b.id =c.id
+    where a.id= #{id} and c.id is null
+  </select>
 
 </mapper>

+ 3 - 3
src/main/java/com/goafanti/expenseAccount/bo/OutExpenseAccountBo.java

@@ -31,7 +31,7 @@ public class OutExpenseAccountBo {
     private String financeName;
     private String attachmentUrl;
     private Integer examine;
-    private Integer realAmount;
+    private BigDecimal realAmount;
 
     public BigDecimal getAmount() {
         return amount;
@@ -57,11 +57,11 @@ public class OutExpenseAccountBo {
         this.buyerName = buyerName;
     }
 
-    public Integer getRealAmount() {
+    public BigDecimal getRealAmount() {
         return realAmount;
     }
 
-    public void setRealAmount(Integer realAmount) {
+    public void setRealAmount(BigDecimal realAmount) {
         this.realAmount = realAmount;
     }
 

+ 3 - 3
src/main/java/com/goafanti/expenseAccount/bo/OutExpenseAccountDetailsList.java

@@ -13,7 +13,7 @@ public class OutExpenseAccountDetailsList {
      * 8=招待费,9=办公费,10=福利费,11=物业水电费,12=打印费
      */
     private Integer type;
-    private Integer typeOther;
+    private String  typeOther;
     /**
      * 金额
      */
@@ -64,11 +64,11 @@ public class OutExpenseAccountDetailsList {
     private String createTimeStr;
     private Integer targetType;
 
-    public Integer getTypeOther() {
+    public String  getTypeOther() {
         return typeOther;
     }
 
-    public void setTypeOther(Integer typeOther) {
+    public void setTypeOther(String typeOther) {
         this.typeOther = typeOther;
     }
 

+ 47 - 13
src/main/java/com/goafanti/expenseAccount/service/impl/ExpenseAccountServiceImpl.java

@@ -244,8 +244,7 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
 
         //计算总金额
         if (in.getTotalAmount()==null){
-            in.setTotalAmount(expenseAccountDetailsMapper.selectAmountCountByEAid(in.getId()));
-            in.setRealAmount(in.getTotalAmount());
+            pushExpenseAccountAmount(in);
         }
         in.setProcessStatus(0);
         if (in.getOrderNo()==null){
@@ -266,12 +265,24 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
             }
         }
         if (in.getSettlementAmount()==null)in.setSettlementAmount(useEA.getSettlementAmount());
-        in.setAmount(in.getTotalAmount().subtract(in.getSettlementAmount()));
+        in.setAmount(in.getRealAmount().subtract(in.getSettlementAmount()));
         in.setRealAmount(in.getAmount());
         in.setStatus(0);
         return expenseAccountMapper.updateByPrimaryKeySelective(in);
     }
 
+    private void pushExpenseAccountAmount(ExpenseAccount in) {
+        List<OutExpenseAccountDetails> list = expenseAccountDetailsMapper.selectByEAid(in.getId());
+        BigDecimal totalAmount = BigDecimal.ZERO;
+        BigDecimal realAmount = BigDecimal.ZERO;
+        for (OutExpenseAccountDetails e : list) {
+            totalAmount=totalAmount.add(e.getAmount());
+            realAmount=realAmount.add(e.getRealAmount());
+        }
+        in.setTotalAmount(totalAmount);
+        in.setRealAmount(realAmount);
+    }
+
     @Override
     public Object updateDebitId(InputExpenseAccount in) {
         OutExpenseAccount useEA = expenseAccountMapper.selectByid(in.getId());
@@ -342,12 +353,21 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
         }
         in.setRealAmount(in.getAmount());
         expenseAccountDetailsMapper.insertSelective(in);
+        ExpenseAccount ea =new ExpenseAccount();
+        ea.setId(in.getEaid());
+        pushExpenseAccountAmount(ea);
+        expenseAccountMapper.updateByPrimaryKeySelective(ea);
         return 1;
     }
 
     @Override
     public int deleteDetails(Integer id) {
-        return expenseAccountDetailsMapper.deleteByPrimaryKey(id);
+        expenseAccountDetailsMapper.deleteByPrimaryKey(id);
+        ExpenseAccount ea =new ExpenseAccount();
+        ea.setId(id);
+        pushExpenseAccountAmount(ea);
+        expenseAccountMapper.updateByPrimaryKeySelective(ea);
+        return 1;
     }
 
     @Override
@@ -725,10 +745,12 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
         in.setEaaid(eaaid);
         BigDecimal count = new BigDecimal(0);
         BigDecimal amount = new BigDecimal(0);
+        BigDecimal realAmount = new BigDecimal(0);
         List<String> typeList = new ArrayList<String>();
         for (ExpenseAccount e : list) {
             count=count.add(e.getTotalAmount());
             amount=amount.add(e.getAmount());
+            realAmount=realAmount.add(e.getRealAmount());
             StringBuffer types=new StringBuffer();
             if (e.getType()!=0){
                 types=types.append(EATypes.getDescByCode(e.getType()));
@@ -747,7 +769,7 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
         }
         in.setTotalAmount(count);
         in.setAmount(amount);
-        in.setRealAmount(amount);
+        in.setRealAmount(realAmount);
         in.setExpenseMain(1);
         in.setTypeOther(String.join(",",typeList));
         expenseAccountMapper.insertSelective(in);
@@ -799,6 +821,16 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
             if (in.getEaaid()!=null)update.setEaaid(in.getEaaid());
             addExpenseAccountExamine(in.getId(),update);
             if (outExpenseAccount.getStatus()==0){
+                //补旧日志
+                MainExpenseAccount mianEA = expenseAccountMapper.selectByMainId(in.getId());
+                List<Integer> collect = mianEA.getSonList().stream().map(SonExpenseAccount::getId).collect(Collectors.toList());
+                if (!collect.isEmpty()){
+                    Integer i = expenseAccountMapper.selectDeleteIdBySonId(collect.get(0));
+                    if (i !=null)
+                        expenseAccountLogMapper.updateUseLogByUseId(in.getId(),i);
+                        expenseAccountLogMapper.deleteByeaid(i);
+                        expenseRelationshipMapper.deleteByPrimaryKey(i);
+                }
                 addExpenseAccountLogAndNoticEmail(outExpenseAccount,outExpenseAccount.getStatus(),"发起报销审核");
             }else if (outExpenseAccount.getStatus()==3){
                 addExpenseAccountLogAndNoticEmail(outExpenseAccount,4,"修改并发起审核");
@@ -811,8 +843,7 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
         }else if (in.getStatus()==4){
             expenseAccountMapper.updateByMainId(in.getId(),0);
             expenseAccountMapper.deleteByPrimaryKey(in.getId());
-            expenseAccountExamineMapper.deleteByEaid(in.getId());
-            expenseRelationshipMapper.deleteByPrimaryKey(in.getId());
+            addExpenseAccountLog(in.getId(),4,0,in.getAid(),"撤销报销审核");
         }
         return 1;
     }
@@ -914,12 +945,15 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
 
     @Override
     public Object updateRealAmount(Integer type, Integer id, BigDecimal amount) {
-            ExpenseAccountDetails ea= new ExpenseAccountDetails();
-            ea.setId(id);
-            ea.setRealAmount(amount);
-            expenseAccountDetailsMapper.updateByPrimaryKeySelective(ea);
-            expenseAccountMapper.updateSonByDetId(id);
-            expenseAccountMapper.updateMainByDetId(id);
+        ExpenseAccountDetails ea= new ExpenseAccountDetails();
+        ea.setId(id);
+        ea.setRealAmount(amount);
+        String name=TokenManager.getAdminToken().getName();
+        Integer eaid = expenseAccountDetailsMapper.selectExpenseAccountById(id);
+        addExpenseAccountLog(eaid,5,3,TokenManager.getAdminId(),String.format("财务[%s]修改实际报销金额为%s。",name,amount));
+        expenseAccountDetailsMapper.updateByPrimaryKeySelective(ea);
+        expenseAccountMapper.updateSonByDetId(id);
+        expenseAccountMapper.updateMainByDetId(id);
         return 1;
     }