Browse Source

财务复审修改开发

anderx 2 years ago
parent
commit
f8a444015f

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

@@ -41,4 +41,6 @@ public interface ExpenseAccountExamineMapper {
 
 
     void deleteByEaid(Integer id);
+
+    Integer selectYesByParam(@Param("id") Integer id, @Param("aid") String aid);
 }

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

@@ -144,8 +144,16 @@
     where eaid = #{id} and process_status> #{processStatus}
     group by process_status
   </select>
-  <delete id="deleteByEaid">
+
+    <delete id="deleteByEaid">
     delete from expense_account_examine
     where eaid = #{id,jdbcType=INTEGER}
   </delete>
+
+  <select id="selectYesByParam" resultType="java.lang.Integer">
+    select count(*)
+    from expense_account_examine
+    where status =1 and auditor = #{aid}
+      and eaid = #{id}
+  </select>
 </mapper>

+ 91 - 65
src/main/java/com/goafanti/expenseAccount/service/impl/ExpenseAccountServiceImpl.java

@@ -21,7 +21,6 @@ import com.goafanti.expenseAccount.Enums.EATypes;
 import com.goafanti.expenseAccount.Enums.EAsecondaryTypes;
 import com.goafanti.expenseAccount.bo.*;
 import com.goafanti.expenseAccount.service.ExpenseAccountService;
-import com.goafanti.expenseAccount.service.ExpenseConfigService;
 import com.goafanti.organization.bo.OrganizationListOut;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.CacheEvict;
@@ -64,7 +63,7 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
     @Autowired
     private DepartmentMapper departmentMapper;
     @Autowired
-    private ExpenseConfigService expenseConfigService;
+    private ExpenseConfigDetailsMapper expenseConfigDetailsMapper;
 
 
 
@@ -135,9 +134,7 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
                 if (StringUtils.isBlank(dep.getExpenseFinanceName()))throw new BusinessException("报销部门财务审核人不存在。");
                 eae.setAuditor(dep.getExpenseFinanceId());
                 eae.setAuditorname(dep.getExpenseFinanceName());
-            }else if (i==4){
-
-            }
+            }else
             if (StringUtils.isNotEmpty(eae.getAuditor())){
                 if (eae.getAuditor().equals(aid))eae.setStatus(1);
                 else  eae.setStatus(0);
@@ -562,82 +559,111 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
 
 
     }
-
+    private List<ExpenseAccountExamine> examineByprocess( ExpenseAccount newEa,AdminListBo admin) {
+        return examineByprocess(newEa,admin,null,null);
+    }
 
 
     /**
      * 审核流程推送,只要不是完成状态就继续判断是否跳过
      * @param newEa
      */
-    private List<ExpenseAccountExamine> examineByprocess( ExpenseAccount newEa,AdminListBo admin) {
+    private List<ExpenseAccountExamine> examineByprocess( ExpenseAccount newEa,AdminListBo admin,OrganizationListOut dep,List<ExpenseConfigDetails> list) {
         //在跳入董事长审核的时候非特批直接跳过,原则上下个流程不可再跳过
-        boolean flag2= false;
-        Date date2=new Date();
-        date2.setTime(date2.getTime()+1000l);
-        String statusName="";
-        if (newEa.getProcessStatus()==EAProcessStatus.DSZSH.getCode()){
-            if (newEa.getApproval()!=1){
+        if (dep==null) dep = departmentMapper.selectAllById(newEa.getApplyDep());
+        if (list==null)list = expenseConfigDetailsMapper.selectByDepId(newEa.getApplyDep());
+        List<ExpenseAccountExamine> examineList=new ArrayList<>();
+        if (newEa.getProcessStatus()<EAProcessStatus.CWFS.getCode()){
+            //获取当前流程审核人,如果有已审核则跳过当前审核
+            examineList = expenseAccountExamineMapper.selectByEaidAndProcessStatus(newEa.getId(), newEa.getProcessStatus());
+            boolean flag=false;
+            String aid="";
+            if (examineList.size()>0){
+                for (ExpenseAccountExamine e : examineList) {
+                    if (e.getStatus()==1){
+                        flag=true;
+                        aid=e.getAuditor();
+                        break;
+                    }
+                    if(e.getAuditor().equals(newEa.getAid())){
+                        flag=true;
+                        break;
+                    }
+                }
+            }
+            //如果当前审核人已经审核,则跳过当前审核
+            if (flag){
+                String str=String.format("重复审核人跳过[%s]。",EAProcessStatus.getDesc(newEa.getProcessStatus()));
+                Date date=new Date();
+                date.setTime(date.getTime()+1000l);
+                addExpenseAccountLog(newEa.getId(),1,newEa.getProcessStatus(),aid,str,date);
+                if (newEa.getProcessStatus()==EAProcessStatus.BMFZRSH.getCode()){
+                    addFinanceCount(admin.getDepFinance(),newEa.getCreateTime());
+                }
                 newEa.setProcessStatus(newEa.getProcessStatus()+1);
-                flag2=true;
-                statusName="特批(财务选择)";
+                examineByprocess(newEa,admin,dep,list);
             }
         }else {
-            newEa.setProcessStatus(newEa.getProcessStatus()+1);
-            flag2=true;
-            statusName=EAProcessStatus.DSZSH.getDesc();
-        }
-        if (newEa.getProcessStatus()==EAProcessStatus.CWGGLYSH.getCode()){
-            newEa.setProcessStatus(newEa.getProcessStatus()+1);
-            flag2=true;
-            statusName=EAProcessStatus.CWGGLYSH.getDesc();
-        }
-        if (newEa.getProcessStatus()==EAProcessStatus.GSFSSH.getCode()){
-            newEa.setProcessStatus(newEa.getProcessStatus()+1);
-            flag2=true;
-            statusName=EAProcessStatus.GSFSSH.getDesc();
-        }
-        if (flag2){
-            addExpenseAccountLog(newEa.getId(),1,newEa.getProcessStatus(),"1",String.format("未设置[%s]审核,跳过此流程"),date2);
-        }
-        //获取当前流程审核人,如果有已审核则跳过当前审核
-        List<ExpenseAccountExamine> list = expenseAccountExamineMapper.selectByEaidAndProcessStatus(newEa.getId(), newEa.getProcessStatus());
-        boolean flag=false;
-        String aid="";
-        if (list.size()>0){
-            for (ExpenseAccountExamine e : list) {
-                if (e.getStatus()==1){
-                    flag=true;
-                    aid=e.getAuditor();
-                    break;
+            boolean flag2= false;
+            Date date2=new Date();
+            date2.setTime(date2.getTime()+1000l);
+            String tip="";
+            if (newEa.getProcessStatus()==EAProcessStatus.CWFS.getCode()){
+                //财务复审财务复审
+                if (dep.getExpenseRetrialFinanceExamine()==0){
+                    flag2=true;
+                    tip="部门未设置财务复审,跳过此流程";
+                }else {
+                    List<ExpenseConfigDetails> collect = list.stream().filter(e -> e.getType() == 1).collect(Collectors.toList());
+                    int count = 0;
+                    examineList.clear();
+                    for (ExpenseConfigDetails e : collect) {
+                        ExpenseAccountExamine eae=new ExpenseAccountExamine(newEa.getId(),EAProcessStatus.CWFS.getCode());
+                        eae.setAuditor(e.getAid());
+                        eae.setAuditorname(e.getAdminName());
+                        Integer i = expenseAccountExamineMapper.selectYesByParam(newEa.getId(), e.getAid());
+                        if (i>0||e.getAid().equals(TokenManager.getAdminId())) {
+                            eae.setStatus(1);
+                            count++;
+                        }
+                        examineList.add(eae);
+                    }
+                    if (count==collect.size()){
+                        flag2=true;
+                        tip="财务复审全部通过审核,步入下个流程";
+                    }
                 }
-                if(e.getAuditor().equals(newEa.getAid())){
-                    flag=true;
-                    break;
+            }else if (newEa.getProcessStatus()==EAProcessStatus.DSZSH.getCode()){
+                if (newEa.getApproval()!=1){
+                    newEa.setProcessStatus(newEa.getProcessStatus()+1);
+                    flag2=true;
+                    tip="特批(财务选择)";
                 }
+            }else {
+                newEa.setProcessStatus(newEa.getProcessStatus()+1);
+                flag2=true;
+                tip=EAProcessStatus.DSZSH.getDesc();
             }
-        }
-        //如果当前审核人已经审核,则跳过当前审核
-        if (flag&&newEa.getProcessStatus()<6){
-            String str=String.format("重复审核人跳过[%s]。",EAProcessStatus.getDesc(newEa.getProcessStatus()));
-            Date date=new Date();
-            date.setTime(date.getTime()+1000l);
-            addExpenseAccountLog(newEa.getId(),1,newEa.getProcessStatus(),aid,str,date);
-            if (newEa.getProcessStatus()==EAProcessStatus.BMFZRSH.getCode()){
-                addFinanceCount(admin.getDepFinance(),newEa.getCreateTime());
+            if (newEa.getProcessStatus()==EAProcessStatus.CWGGLYSH.getCode()){
+                newEa.setProcessStatus(newEa.getProcessStatus()+1);
+                flag2=true;
+                tip=EAProcessStatus.CWGGLYSH.getDesc();
+            }
+            if (newEa.getProcessStatus()==EAProcessStatus.GSFSSH.getCode()){
+                newEa.setProcessStatus(newEa.getProcessStatus()+1);
+                flag2=true;
+                tip=EAProcessStatus.GSFSSH.getDesc();
+            }
+            if (flag2){
+                addExpenseAccountLog(newEa.getId(),1,newEa.getProcessStatus(),"1",String.format("未设置[%s]审核,跳过此流程",tip),date2);
+                newEa.setProcessStatus(newEa.getProcessStatus()+1);
+                examineByprocess(newEa,admin,dep,list);
             }
-            newEa.setProcessStatus(newEa.getProcessStatus()+1);
-            examineByprocess(newEa,admin);
-            list=expenseAccountExamineMapper.selectByEaidAndProcessStatus(newEa.getId(), newEa.getProcessStatus());
         }
-        return list;
-    }
 
-    private String getAdmins(List<Admin> list) {
-        StringBuffer str =new StringBuffer();
-        for (Admin admin : list) {
-            str=str.append(admin.getName()).append(",");
-        }
-        return str.substring(0,str.length()-1);
+
+        examineList=expenseAccountExamineMapper.selectByEaidAndProcessStatus(newEa.getId(), newEa.getProcessStatus());
+        return examineList;
     }
 
     private void addNoticeAndEmail(ExpenseAccount in, Integer status, String str,String aname, List<Admin> aids) {