Просмотр исходного кода

新流程财务BUG修复,新流程审核列表修改,详情审核判定修改

anderx лет назад: 2
Родитель
Сommit
9d929ffa20

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

@@ -40,4 +40,5 @@ public interface ExpenseAccountExamineMapper {
     List<OutExpenseAccountLog> selectNotExamineByEaidAndProcessStatus(@Param("id") Integer id, @Param("processStatus") Integer processStatus);
 
 
+    void deleteByEaid(Integer id);
 }

+ 1 - 1
src/main/java/com/goafanti/common/error/SystemExceptionResolver.java

@@ -91,7 +91,7 @@ public class SystemExceptionResolver extends SimpleMappingExceptionResolver{
 			LoggerUtils.fmtError(getClass(), ex, "数据异常。",ex.getClass().getName());
 		}
 		if (StringUtils.isEmpty(error.getMessage())) {
-			error.setMessage("系统异常,请联系管理员。");
+			error.setMessage("数据异常,请稍后再试,如再失败请联系管理员。");
 		}
 		return new BusinessException(error, ex.getCause());
 	}

+ 6 - 2
src/main/java/com/goafanti/common/mapper/ExpenseAccountExamineMapper.xml

@@ -23,6 +23,7 @@
     delete from expense_account_examine
     where id = #{id,jdbcType=INTEGER}
   </delete>
+
   <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.goafanti.common.model.ExpenseAccountExamine" useGeneratedKeys="true">
     insert into expense_account_examine (eaid, process_status, `status`,
       auditor, auditorName, create_time
@@ -121,7 +122,7 @@
   </insert>
   <update id="updateStatusByEaidAndAid">
     update expense_account_examine
-    set status= #{status}
+    set status= #{status} and process_status &lt; 8
     where eaid =#{id}
       <if test="aid != null">
         and auditor= #{aid}
@@ -143,5 +144,8 @@
     where eaid = #{id} and process_status> #{processStatus}
     group by process_status
   </select>
-
+  <delete id="deleteByEaid">
+    delete from expense_account_examine
+    where eaid = #{id,jdbcType=INTEGER}
+  </delete>
 </mapper>

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

@@ -890,12 +890,22 @@
       </if>
     </if>
     <if test="roleType > 0">
-      <if test="listStatus ==0">
-        and b.process_status =eae.type
-      </if>
-      <if test="listStatus ==1">
-        and b.process_status &gt; eae.type
-      </if>
+        <if test="roleType !=3">
+          <if test="listStatus ==0">
+            and b.process_status =eae.type
+          </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
+          </if>
+          <if test="listStatus ==1">
+            and b.process_status &gt; 3
+          </if>
+        </if>
     </if>
     <if test="startTime !=null and endTime !=null ">
       and b.create_time between #{startTime} and #{endTime}

+ 31 - 20
src/main/java/com/goafanti/expenseAccount/service/impl/ExpenseAccountServiceImpl.java

@@ -487,21 +487,24 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
             //审核处理审核表
             expenseAccountExamineMapper.updateStatusByEaidAndAid(in.getId(),TokenManager.getAdminId(),1);
             str=str.append("编号[").append(in.getCheckNo()).append("]需要审核").append(",请查看并审核。");
-            //新的流程是当前流程+1
-            newEa.setProcessStatus(useEa.getProcessStatus()+1);
+
             newEa.setAid(useEa.getAid());
             newEa.setCreateTime(useEa.getCreateTime());
-            if (newEa.getApproval()==null)newEa.setApproval(useEa.getApproval());
-            //添加后续流程
-            addExpenseAccountExamineFollow(in);
-            List<ExpenseAccountExamine> list=examineByprocess(newEa,admin);
-            if(newEa.getProcessStatus()==8){
+            if(useEa.getProcessStatus()==EAProcessStatus.CNSH.getCode()){
                 //完成后的流程
                 status =2;
                 aids.add(adminMapper.selectByPrimaryKey(admin.getId()));
                 newEa.setStatus(status);
                 newEa.setExamineName("");
             }else {
+                //新的流程是当前流程+1
+                newEa.setProcessStatus(useEa.getProcessStatus()+1);
+                if (newEa.getApproval()==null)newEa.setApproval(useEa.getApproval());
+                //添加后续流程
+                if(newEa.getProcessStatus()==EAProcessStatus.CWSH.getCode()){
+                    addExpenseAccountExamineFollow(in);
+                }
+                List<ExpenseAccountExamine> list=examineByprocess(newEa,admin);
                 StringBuffer aname =new StringBuffer();
                 for (ExpenseAccountExamine e : list) {
                     if (e.getProcessStatus()==newEa.getProcessStatus()&&e.getStatus()==0){
@@ -600,7 +603,7 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
             }
         }
 
-        if (flag&&newEa.getProcessStatus()<7){
+        if (flag&&newEa.getProcessStatus()<6){
             String str=String.format("重复审核人跳过[%s]。",EAProcessStatus.getDesc(newEa.getProcessStatus()));
             Date date=new Date();
             date.setTime(date.getTime()+1000l);
@@ -609,8 +612,12 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
                 addFinanceCount(admin.getDepFinance(),newEa.getCreateTime());
             }
             newEa.setProcessStatus(newEa.getProcessStatus()+1);
+            //在跳过的时候如果小于财务继续跳
             if (newEa.getProcessStatus()<EAProcessStatus.CWSH.getCode())examineByprocess(newEa,admin);
-            if (newEa.getProcessStatus()==EAProcessStatus.DSZSH.getCode()&&newEa.getApproval()!=1)newEa.setProcessStatus(newEa.getProcessStatus()+1);
+            //在跳入董事长审核的时候非特批直接跳过,原则上下个流程不可再跳过
+            if (newEa.getProcessStatus()==EAProcessStatus.DSZSH.getCode()&&newEa.getApproval()!=1){
+                newEa.setProcessStatus(newEa.getProcessStatus()+1);
+            }
             list=expenseAccountExamineMapper.selectByEaidAndProcessStatus(newEa.getId(), newEa.getProcessStatus());
         }
         return list;
@@ -758,7 +765,9 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
         List<ExpenseAccountExamine> expenseAccountExamines = expenseAccountExamineMapper.selectByEaidAndProcessStatus(id, res.getProcessStatus());
         for (ExpenseAccountExamine e : expenseAccountExamines) {
             if (e.getAuditor().equals(TokenManager.getAdminId())){
-                res.setExamine(1);
+                if (res.getStatus()==1){
+                    res.setExamine(1);
+                }
                 break;
             }
         }
@@ -791,15 +800,18 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
             }else if (outExpenseAccount.getStatus()==3){
                 addExpenseAccountLogAndNoticEmail(outExpenseAccount,4,"修改并发起审核");
             }
+            update.setStatus(in.getStatus());
+            update.setProcessStatus(outExpenseAccount.getProcessStatus());
+            update.setId(in.getId());
+            update.setExamineName(outExpenseAccount.getExamineName());
+            expenseAccountMapper.updateByPrimaryKeySelective(update);
         }else if (in.getStatus()==4){
             expenseAccountMapper.updateByMainId(in.getId(),0);
-            addExpenseAccountLog(in.getId(),4,0,in.getAid(),"撤销报销审核");
+            expenseAccountMapper.deleteByPrimaryKey(in.getId());
+            expenseAccountExamineMapper.deleteByEaid(in.getId());
+            expenseRelationshipMapper.deleteByPrimaryKey(in.getId());
         }
-        update.setStatus(in.getStatus());
-        update.setProcessStatus(outExpenseAccount.getProcessStatus());
-        update.setId(in.getId());
-        update.setExamineName(outExpenseAccount.getExamineName());
-        return expenseAccountMapper.updateByPrimaryKeySelective(update);
+        return 1;
     }
 
     @Override
@@ -815,11 +827,10 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
         }
         //1-3s是不同人的审核
         if (in.getProcessStatus()!=null&&in.getProcessStatus()==1){
-             if (TokenManager.hasRole(AFTConstants.FINANCE)){
+            // 财务审核,复审,出纳都是财务与经理
+             if (TokenManager.hasRole(AFTConstants.FINANCE)||TokenManager.hasRole(AFTConstants.FINANCE_MANAGER)){
                  in.setProcessStatus(3);
-             }else if(TokenManager.hasRole(AFTConstants.FINANCE_MANAGER)){
-                in.setProcessStatus(4);
-            }else if (TokenManager.hasRole(AFTConstants.SALESMAN_MANAGER)){
+             }else if (TokenManager.hasRole(AFTConstants.SALESMAN_MANAGER)){
                  in.setProcessStatus(1);
              }else if (TokenManager.hasRole(AFTConstants.SALESMAN_ADMIN)){
                  in.setProcessStatus(2);