Procházet zdrojové kódy

报销审核流程修改

anderx před 1 rokem
rodič
revize
948e6913de

+ 5 - 16
src/main/java/com/goafanti/common/mapper/ExpenseAccountMapper.xml

@@ -861,7 +861,7 @@
       left join admin ad on b.aid=ad.id
       left join department adDep on ad.department_id=adDep.id
     <if test="roleType > 0">
-      inner join (select eaid ,auditor,min(process_status)`type` from expense_account_examine
+      inner join (select eaid ,auditor,min(process_status)`type`,status from expense_account_examine
       where auditor= #{aid}
       <if test="listStatus ==0"> and status=0 </if>
       <if test="listStatus ==1"> and status=1 </if>
@@ -896,25 +896,14 @@
         <if test="roleType !=3">
           <if test="listStatus ==0">
             and b.process_status =eae.type
+            and eae.status=0
           </if>
           <if test="listStatus ==1">
-            and b.process_status &gt; eae.type
-          </if>
-        </if>
-        <if test="roleType ==3">
-          <if test="listStatus ==0">
-            and b.process_status in (3,4,8) and b.status=1
-            and b.process_status =eae.type
-          </if>
-          <if test="listStatus ==1">
-            and b.process_status &gt; 3
-            and ((b.process_status &gt; eae.type ) or (b.process_status =8 and b.status=2))
+            and b.process_status &gt;= eae.type
+            and eae.status=1
           </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>
@@ -931,7 +920,7 @@
   </if>
     left join admin ad on b.aid=ad.id left join department adDep on ad.department_id=adDep.id
     <if test="roleType > 0">
-      inner join (select eaid ,auditor,min(process_status)`type` from expense_account_examine
+      inner join (select eaid ,auditor,min(process_status)`type`,status from expense_account_examine
       where auditor= #{aid}
       <if test="listStatus ==0"> and status=0 </if>
       <if test="listStatus ==1"> and status=1 </if>

+ 60 - 54
src/main/java/com/goafanti/expenseAccount/service/impl/ExpenseAccountServiceImpl.java

@@ -449,16 +449,23 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
             OutExpenseAccountLog lastout = list.get(list.size() - 1);
             ExpenseAccount expenseAccount = expenseAccountMapper.selectByPrimaryKey(eaid);
             Integer processStatus = lastout.getProcessStatus();
-            if (processStatus<8){
                 if (processStatus <3){
                     List<OutExpenseAccountLog> outExpenseAccountLogs = expenseAccountExamineMapper.selectNotExamineByEaidAndProcessStatus(eaid, processStatus);
                     list.addAll(outExpenseAccountLogs);
                 }
                 if (lastout.getStatus() != 3) {
-                    addDetailsLog(list, expenseAccount,processStatus);
-
+                    List<ExpenseAccountExamine> expenseAccountExamines = expenseAccountExamineMapper.selectByEaidAndProcessStatus(eaid, processStatus);
+                    for (ExpenseAccountExamine e : expenseAccountExamines) {
+                        if (e.getStatus()==0){
+                            OutExpenseAccountLog out =new OutExpenseAccountLog();
+                            out.setEaid(eaid);
+                            out.setProcessStatus(e.getProcessStatus());
+                            out.setAuditorName(e.getAuditorname());
+                            list.add(out);
+                        }
+                    }
+                    if (processStatus<8)addDetailsLog(list, expenseAccount,processStatus);
                 }
-            }
         }
             return list;
     }
@@ -527,6 +534,7 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
         in.setProcessStatus(useEa.getProcessStatus());
         //审核通知 获取发送人
         AdminListBo admin = adminMapper.getDeptNameByAid(useEa.getAid());
+        //项目推送流程及添加日志
         addExamineExpenseAccountLog(admin,in, useEa, newEa);
         //完成申请
         if (newEa.getStatus()==2){
@@ -640,18 +648,30 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
             OrganizationListOut dep = departmentMapper.selectAllById(newEa.getApplyDep());
             List<ExpenseConfigDetails>  configDetailsList = expenseConfigDetailsMapper.selectByDepId(newEa.getApplyDep());
             if(useEa.getProcessStatus()==EAProcessStatus.CNSH.getCode()){
+                expenseAccountExamineMapper.updateStatusByEaidAndAid(in.getId(),TokenManager.getAdminId(),1,1);
                 boolean expenseExamine = pushExpenseExamine(configDetailsList, newEa,  EAProcessStatus.CNSH.getCode());
                 if (expenseExamine){
                     //完成后的流程
                     status =2;
-                    expenseAccountExamineMapper.updateStatusByEaidAndAid(in.getId(),TokenManager.getAdminId(),1,1);
                     aids.add(adminMapper.selectByPrimaryKey(admin.getId()));
+
                     newEa.setStatus(status);
                     newEa.setExamineName("");
                 }else {
                     status =1;
+                    List<ExpenseAccountExamine> list=expenseAccountExamineMapper.selectByEaidAndProcessStatus(newEa.getId(), useEa.getProcessStatus());
+                    StringBuffer aname =new StringBuffer();
+                    for (ExpenseAccountExamine e : list) {
+                        if (e.getStatus()==0){
+                            Admin ad=adminMapper.selectByPrimaryKey(e.getAuditor());
+                            aids.add(ad);
+                            aname=aname.append(ad.getName()).append(",");
+                        }
+                    }
+                    newEa.setExamineName(aname.substring(0,aname.length()-1));
                 }
                 addExpenseAccountLog(in.getId(),status,useEa.getProcessStatus(),TokenManager.getAdminId(),in.getReason());
+
             }else {
                 addExpenseAccountLog(in.getId(),status,useEa.getProcessStatus(),TokenManager.getAdminId(),in.getReason());
                 newEa.setStatus(1);
@@ -769,7 +789,7 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
                     flag2=true;
                     tip=EAProcessStatus.CWFS.getDesc();
                 }else {
-                    boolean expenseExamine = pushExpenseExamine(list, newEa,  EAProcessStatus.CNSH.getCode());
+                    boolean expenseExamine = pushExpenseExamine(list, newEa,  EAProcessStatus.CWFS.getCode());
                     if (expenseExamine){
                         flag3=true;
                     }
@@ -845,27 +865,40 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
         else if (status==EAProcessStatus.GSFSSH.getCode())configDetails=4;
         else if (status==EAProcessStatus.CNSH.getCode())configDetails=5;
         int finalConfigDetails = configDetails;
-        List<ExpenseConfigDetails> collect = list.stream().filter(e -> e.getType() == finalConfigDetails).collect(Collectors.toList());
+        //查询审核表,如果为空就新增,不然直接判定审核
+        List<ExpenseAccountExamine> expenseAccountExamines = expenseAccountExamineMapper.selectByEaidAndProcessStatus(newEa.getId(), status);
         int count = 0;
-        List<ExpenseAccountExamine> examineList=new ArrayList<>();
-        for (ExpenseConfigDetails e : collect) {
-            ExpenseAccountExamine eae=new ExpenseAccountExamine(newEa.getId(),status);
-            eae.setAuditor(e.getAid());
-            eae.setAuditorname(e.getAdminName());
-            eae.setStatus(0);
-            Integer i = expenseAccountExamineMapper.selectYesByParam(newEa.getId(), e.getAid());
-            if (status==EAProcessStatus.CNSH.getCode()){
+        int size=10;
+        if (expenseAccountExamines.isEmpty()){
+            List<ExpenseConfigDetails> collect = list.stream().filter(e -> e.getType() == finalConfigDetails).collect(Collectors.toList());
+            size= collect.size();
+            for (ExpenseConfigDetails e : collect) {
+                ExpenseAccountExamine eae=new ExpenseAccountExamine(newEa.getId(),status);
+                eae.setAuditor(e.getAid());
+                eae.setAuditorname(e.getAdminName());
                 eae.setStatus(0);
-                count++;
-            }else {
-                if (i>0||e.getAid().equals(TokenManager.getAdminId())) {
-                    eae.setStatus(1);
+                Integer i = expenseAccountExamineMapper.selectYesByParam(newEa.getId(), e.getAid());
+                if (status==EAProcessStatus.CNSH.getCode()){
+                    eae.setStatus(0);
+                    count++;
+                }else {
+                    if (i>0||e.getAid().equals(TokenManager.getAdminId())) {
+                        eae.setStatus(1);
+                        count++;
+                    }
+                }
+                expenseAccountExamineMapper.insertSelective(eae);
+            }
+
+        }else {
+            size = expenseAccountExamines.size();
+            for (ExpenseAccountExamine e : expenseAccountExamines) {
+                if (e.getStatus()==1){
                     count++;
                 }
             }
-            expenseAccountExamineMapper.insertSelective(eae);
         }
-        if (count==collect.size()){
+        if (count==size){
             return true;
         }
         return false;
@@ -928,7 +961,7 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
     public Object selectById(Integer id) {
         OutExpenseAccount useEa = expenseAccountMapper.selectByid(id);
         //判断当前角色是否审核
-        pushExpenseAccountGetExamine(useEa);
+        useEa.setExamine(pushExpenseAccountGetExamine( id, useEa.getProcessStatus()));;
         if (useEa.getDebitId()!=null){
             pushExpenseAccountGetDebitAmount(useEa);
 
@@ -1009,17 +1042,10 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
     public MainExpenseAccount mainExpense(Integer id) {
         MainExpenseAccount res = expenseAccountMapper.selectByMainId(id);
         res.setExamine(0);
-        List<ExpenseAccountExamine> expenseAccountExamines = expenseAccountExamineMapper.selectByEaidAndProcessStatus(id, res.getProcessStatus());
-        for (ExpenseAccountExamine e : expenseAccountExamines) {
-            if (e.getAuditor().equals(TokenManager.getAdminId())){
-                if (res.getStatus()==1){
-                    res.setExamine(1);
-                }
-                break;
-            }
-        }
         if (res.getAid().equals(TokenManager.getAdminId())){
             res.setExamine(2);
+        }else {
+            res.setExamine(pushExpenseAccountGetExamine( id, res.getProcessStatus()));;
         }
         return res;
     }
@@ -1205,29 +1231,9 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
 
     /**
      * 判断角色是否已经审核
-     * @param useEa
-     */
-    private void pushExpenseAccountGetExamine(OutExpenseAccount useEa) {
-        List<ExpenseAccountExamine> list = expenseAccountExamineMapper.selectByEaidAndProcessStatus(useEa.getId(), useEa.getProcessStatus());
-        boolean flag=false;
-        for (ExpenseAccountExamine e : list) {
-            if (e.getAuditor().equals(TokenManager.getAdminId())){
-                if (e.getStatus()==0){
-                    flag=true;
-                    break;
-                }
-            }
-        }
-        if (flag){
-            useEa.setExamine(1);
-        }else {
-            useEa.setExamine(0);
-        }
-    }
-
-    /**
-     * 判断角色是否已经审核
-     * @param
+     * @param id  编号
+     * @param processStatus  审核状态
+     * @return 0 无需审核 1 需要审核
      */
     private Integer pushExpenseAccountGetExamine(Integer id,Integer processStatus) {
         List<ExpenseAccountExamine> list = expenseAccountExamineMapper.selectByEaidAndProcessStatus(id, processStatus);