|
|
@@ -24,6 +24,7 @@ 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.organization.bo.OrganizationListOut;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.cache.annotation.CacheEvict;
|
|
|
import org.springframework.cache.annotation.Cacheable;
|
|
|
@@ -62,6 +63,8 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
private ExpenseRelationshipMapper expenseRelationshipMapper;
|
|
|
@Autowired
|
|
|
private DepartmentService departmentService;
|
|
|
+ @Autowired
|
|
|
+ private DepartmentMapper departmentMapper;
|
|
|
|
|
|
|
|
|
|
|
|
@@ -102,12 +105,13 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
private void addExpenseAccountExamine(Integer id,ExpenseAccount ea) {
|
|
|
List<ExpenseAccountExamine> list=new ArrayList<>();
|
|
|
String aid = TokenManager.getAdminId();
|
|
|
- Admin admin = adminMapper.selectByPrimaryKey(aid);
|
|
|
- for (int i=1;i<5;i++){
|
|
|
+ OrganizationListOut dep = departmentMapper.selectAllById(ea.getApplyDep());
|
|
|
+ AdminNoticeBo a = adminMapper.selectMyAndSuperBySuperId(aid);
|
|
|
+ //暂时只发起到财务
|
|
|
+ for (int i=1;i<4;i++){
|
|
|
+ ExpenseAccountExamine eae=new ExpenseAccountExamine(id,i);
|
|
|
if (i==1){
|
|
|
//新增一级
|
|
|
- ExpenseAccountExamine eae=new ExpenseAccountExamine(id,i);
|
|
|
- AdminNoticeBo a = adminMapper.selectMyAndSuperBySuperId(aid);
|
|
|
String examineId=null;
|
|
|
String examineName=null;
|
|
|
//正常用上级,没有的情况下就是自己
|
|
|
@@ -121,42 +125,20 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
eae.setAuditor(examineId);
|
|
|
eae.setAuditorname(examineName);
|
|
|
ea.setExamineName(examineName);
|
|
|
- if (eae.getAuditor().equals(aid))eae.setStatus(1);
|
|
|
- else eae.setStatus(0);
|
|
|
- list.add(eae);
|
|
|
}else if (i==2){
|
|
|
- ExpenseAccountExamine eae=new ExpenseAccountExamine(id,i);
|
|
|
- Admin admin2 = adminMapper.selectFinanceAdminByAid(aid);
|
|
|
- if (admin2==null){
|
|
|
- throw new BusinessException("发起人部门财务专员不存在。");
|
|
|
- }
|
|
|
- eae.setAuditor(admin2.getId());
|
|
|
- eae.setAuditorname(admin2.getName());
|
|
|
- if (eae.getAuditor().equals(aid))eae.setStatus(1);
|
|
|
- else eae.setStatus(0);
|
|
|
- list.add(eae);
|
|
|
+ if (dep.getManagerId()==null)throw new BusinessException("报销申请部门管理员不存在。");
|
|
|
+ eae.setAuditor(dep.getManagerId());
|
|
|
+ eae.setAuditorname(dep.getManagerName());
|
|
|
}else if (i==3){
|
|
|
- List<Admin> admins = adminMapper.listAdminBydepIdAndRoleType(admin.getDepartmentId(), AFTConstants.SALESMAN_ADMIN);
|
|
|
- if (admins.isEmpty())throw new BusinessException("发起人部门营销管理员不存在。");
|
|
|
- for (Admin e : admins) {
|
|
|
- ExpenseAccountExamine eae=new ExpenseAccountExamine(id,i);
|
|
|
- eae.setAuditor(e.getId());
|
|
|
- eae.setAuditorname(e.getName());
|
|
|
- if (eae.getAuditor().equals(aid))eae.setStatus(1);
|
|
|
- else eae.setStatus(0);
|
|
|
- list.add(eae);
|
|
|
- }
|
|
|
+ if (dep.getExpenseFinanceName()==null)throw new BusinessException("报销部门财务审核人不存在。");
|
|
|
+ eae.setAuditor(dep.getExpenseFinanceId());
|
|
|
+ eae.setAuditorname(dep.getExpenseFinanceName());
|
|
|
}else if (i==4){
|
|
|
- List<Admin> admins = adminMapper.selectAdminByRoleType(AFTConstants.APPROVAL_DECISION);
|
|
|
- for (Admin e : admins) {
|
|
|
- ExpenseAccountExamine eae=new ExpenseAccountExamine(id,i);
|
|
|
- eae.setAuditor(e.getId());
|
|
|
- eae.setAuditorname(e.getName());
|
|
|
- if (eae.getAuditor().equals(aid))eae.setStatus(1);
|
|
|
- else eae.setStatus(0);
|
|
|
- list.add(eae);
|
|
|
- }
|
|
|
+
|
|
|
}
|
|
|
+ if (eae.getAuditor().equals(aid))eae.setStatus(1);
|
|
|
+ else eae.setStatus(0);
|
|
|
+ list.add(eae);
|
|
|
|
|
|
}
|
|
|
expenseAccountExamineMapper.insertBatch(list);
|
|
|
@@ -215,30 +197,17 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
private void createExamineByProcess(ExpenseAccount in) {
|
|
|
//审核流程推送到最新
|
|
|
AdminListBo admin = adminMapper.getDeptNameByAid(in.getAid());
|
|
|
- examineByprocess(in,admin);
|
|
|
+ List<ExpenseAccountExamine> list=examineByprocess(in,admin);
|
|
|
List<Admin> aids=new ArrayList<>();
|
|
|
- if(in.getProcessStatus()== EAProcessStatus.SJSH.getCode()){
|
|
|
- //获取上级
|
|
|
- Admin superAdmin = adminMapper.selectByPrimaryKey(admin.getSuperiorId());
|
|
|
- aids.add(superAdmin);
|
|
|
- in.setExamineName(superAdmin.getName());
|
|
|
- }else if (in.getProcessStatus()== EAProcessStatus.CWSH.getCode()){
|
|
|
- //获取财务负责人
|
|
|
- Admin finaceAdmin = adminMapper.selectByPrimaryKey(admin.getDepFinance());
|
|
|
- aids.add(finaceAdmin);
|
|
|
- in.setExamineName(finaceAdmin.getName());
|
|
|
- addFinanceCount( admin.getDepFinance(), new Date());
|
|
|
- }else if (in.getProcessStatus()== EAProcessStatus.ZJLSH.getCode()){
|
|
|
- //获取部门负责人
|
|
|
- List<Admin> list = adminMapper.listAdminBydepIdAndRoleType(admin.getDepartmentId(), AFTConstants.SALESMAN_ADMIN);
|
|
|
- if (!list.isEmpty())aids.addAll(list);
|
|
|
- in.setExamineName(getAdmins(list));
|
|
|
- }else if (in.getProcessStatus()== EAProcessStatus.DSZSH.getCode()){
|
|
|
- //获取总裁、董事长等审核
|
|
|
- List<Admin> list = adminMapper.selectAdminByRoleType(AFTConstants.All_CED_AND_CHAIRMAN);
|
|
|
- if (!list.isEmpty())aids.addAll(list);
|
|
|
- in.setExamineName(getAdmins(list));
|
|
|
+ StringBuffer aname =new StringBuffer();
|
|
|
+ for (ExpenseAccountExamine e : list) {
|
|
|
+ if (e.getProcessStatus()==in.getProcessStatus()&&e.getStatus()==0){
|
|
|
+ Admin ad = adminMapper.selectByPrimaryKey(e.getAuditor());
|
|
|
+ aids.add(ad);
|
|
|
+ aname=aname.append(ad.getName()).append(",");
|
|
|
+ }
|
|
|
}
|
|
|
+ in.setExamineName(aname.substring(0,aname.length()-1));
|
|
|
StringBuffer str=new StringBuffer().append("编号[").append(in.getCheckNo()).append("]需要审核").append(",请查看并审核。");
|
|
|
addNoticeAndEmail(in, EAProcessStatus.SJSH.getCode(),str.toString(), admin.getName(),aids);
|
|
|
}
|
|
|
@@ -391,6 +360,7 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
ExpenseAccount newEa=new ExpenseAccount();
|
|
|
newEa.setId(useEa.getId());
|
|
|
in.setCheckNo(useEa.getCheckNo());
|
|
|
+ in.setProcessStatus(useEa.getProcessStatus());
|
|
|
//审核通知 获取发送人
|
|
|
AdminListBo admin = adminMapper.getDeptNameByAid(useEa.getAid());
|
|
|
addExamineExpenseAccountLog(admin,in, useEa, newEa);
|
|
|
@@ -427,7 +397,7 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
expenseAccountMapper.updateByPrimaryKeySelective(updateSon);
|
|
|
}
|
|
|
}else if (newEa.getStatus()==1){
|
|
|
- if (newEa.getProcessStatus()==EAProcessStatus.CWSH.getCode()){
|
|
|
+ if (newEa.getProcessStatus()==EAProcessStatus.BMFZRSH.getCode()){
|
|
|
pushFinanceCount(admin.getDepFinance(),useEa.getCreateTime(),0);
|
|
|
//处理金额修改
|
|
|
if(in.getRealList()!=null){
|
|
|
@@ -450,13 +420,13 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- }else if (newEa.getProcessStatus()==EAProcessStatus.ZJLSH.getCode()){
|
|
|
+ }else if (newEa.getProcessStatus()==EAProcessStatus.CWSH.getCode()){
|
|
|
pushFinanceCount(admin.getDepFinance(),useEa.getCreateTime(),1);
|
|
|
}
|
|
|
}else if (newEa.getStatus()==3){
|
|
|
- if (useEa.getProcessStatus()==EAProcessStatus.CWSH.getCode()){
|
|
|
+ if (useEa.getProcessStatus()==EAProcessStatus.BMFZRSH.getCode()){
|
|
|
pushFinanceCount(admin.getDepFinance(),useEa.getCreateTime(),2);
|
|
|
- }else if (newEa.getProcessStatus()>EAProcessStatus.ZJLSH.getCode()){
|
|
|
+ }else if (newEa.getProcessStatus()>EAProcessStatus.CWSH.getCode()){
|
|
|
pushFinanceCount(admin.getDepFinance(),useEa.getCreateTime(),3);
|
|
|
}
|
|
|
}
|
|
|
@@ -508,41 +478,32 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
newEa.setProcessStatus(useEa.getProcessStatus()+1);
|
|
|
newEa.setAid(useEa.getAid());
|
|
|
newEa.setCreateTime(useEa.getCreateTime());
|
|
|
- pushExamineProcess(newEa,admin);
|
|
|
- if (newEa.getProcessStatus()== EAProcessStatus.CWSH.getCode()){
|
|
|
- //获取财务负责人
|
|
|
- Admin finaceAdmin = adminMapper.selectByPrimaryKey(admin.getDepFinance());
|
|
|
- aids.add(finaceAdmin);
|
|
|
- newEa.setExamineName(finaceAdmin.getName());
|
|
|
- }else if (newEa.getProcessStatus()== EAProcessStatus.ZJLSH.getCode()){
|
|
|
- //获取部门负责人
|
|
|
- List<Admin> list = adminMapper.listAdminBydepIdAndRoleType(admin.getDepartmentId(), AFTConstants.SALESMAN_ADMIN);
|
|
|
- if (!list.isEmpty())aids.addAll(list);
|
|
|
- newEa.setExamineName(getAdmins(list));
|
|
|
- }else if (newEa.getProcessStatus()== EAProcessStatus.DSZSH.getCode()){
|
|
|
- //获取总裁、董事长等审核
|
|
|
- List<Admin> list = adminMapper.selectAdminByRoleType(AFTConstants.APPROVAL_DECISION);
|
|
|
- if (!list.isEmpty())aids.addAll(list);
|
|
|
- newEa.setExamineName(getAdmins(list));
|
|
|
- }else if (newEa.getProcessStatus()== EAProcessStatus.WCSH.getCode()){
|
|
|
- //获取报销申请人
|
|
|
- status =2;
|
|
|
- Admin finaceAdmin = adminMapper.selectByPrimaryKey(admin.getDepFinance());
|
|
|
- //同事添加通知财务管理员与公司副总
|
|
|
- List<Admin> admins = adminMapper.selectAdminByRoleType(AFTConstants.FINANCE_ADMIN);
|
|
|
- aids.addAll(admins);
|
|
|
- List<Admin> viceCEO = adminMapper.selectAdminByRoleType(AFTConstants.VICE_CEO);
|
|
|
- aids.addAll(viceCEO);
|
|
|
- aids.add(finaceAdmin);
|
|
|
- str.setLength(0);
|
|
|
- str=str.append("报销编号[").append(in.getCheckNo()).append("]审核已通过,请注意查看。");
|
|
|
- addNoticeAndEmail(in, status,str.toString(),admin.getName(),aids);
|
|
|
- aids.clear();
|
|
|
- aids.add(adminMapper.selectByPrimaryKey(admin.getId()));
|
|
|
- newEa.setStatus(status);
|
|
|
- newEa.setExamineName("");
|
|
|
-
|
|
|
+ List<ExpenseAccountExamine> list=examineByprocess(newEa,admin);
|
|
|
+ StringBuffer aname =new StringBuffer();
|
|
|
+ for (ExpenseAccountExamine e : list) {
|
|
|
+ if (e.getProcessStatus()==newEa.getProcessStatus()&&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));
|
|
|
+ //完成后的流程
|
|
|
+// status =2;
|
|
|
+// Admin finaceAdmin = adminMapper.selectByPrimaryKey(admin.getDepFinance());
|
|
|
+// //同事添加通知财务管理员与公司副总
|
|
|
+// List<Admin> admins = adminMapper.selectAdminByRoleType(AFTConstants.FINANCE_ADMIN);
|
|
|
+// aids.addAll(admins);
|
|
|
+// List<Admin> viceCEO = adminMapper.selectAdminByRoleType(AFTConstants.VICE_CEO);
|
|
|
+// aids.addAll(viceCEO);
|
|
|
+// aids.add(finaceAdmin);
|
|
|
+// str.setLength(0);
|
|
|
+// str=str.append("报销编号[").append(in.getCheckNo()).append("]审核已通过,请注意查看。");
|
|
|
+// addNoticeAndEmail(in, status,str.toString(),admin.getName(),aids);
|
|
|
+// aids.clear();
|
|
|
+// aids.add(adminMapper.selectByPrimaryKey(admin.getId()));
|
|
|
+// newEa.setStatus(status);
|
|
|
+// newEa.setExamineName("");
|
|
|
}else {
|
|
|
aids.add(adminMapper.selectByPrimaryKey(admin.getId()));
|
|
|
newEa.setStatus(3);
|
|
|
@@ -591,7 +552,7 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
|
|
|
private void pushExamineProcess( ExpenseAccount newEa,AdminListBo admin) {
|
|
|
//如果到了董事长审核,无需判断了
|
|
|
- if (newEa.getProcessStatus()<EAProcessStatus.WCSH.getCode()){
|
|
|
+ if (newEa.getProcessStatus()<EAProcessStatus.CWSH.getCode()){
|
|
|
//判断没一个流程是否可以跳过
|
|
|
examineByprocess(newEa,admin);
|
|
|
}
|
|
|
@@ -601,7 +562,7 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
* 审核流程推送,只要不是完成状态就继续判断是否跳过
|
|
|
* @param newEa
|
|
|
*/
|
|
|
- private void examineByprocess( ExpenseAccount newEa,AdminListBo admin) {
|
|
|
+ private List<ExpenseAccountExamine> examineByprocess( ExpenseAccount newEa,AdminListBo admin) {
|
|
|
//获取当前流程审核人,如果有已审核则跳过当前审核
|
|
|
List<ExpenseAccountExamine> list = expenseAccountExamineMapper.selectByEaidAndProcessStatus(newEa.getId(), newEa.getProcessStatus());
|
|
|
boolean flag=false;
|
|
|
@@ -623,13 +584,13 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
Date date=new Date();
|
|
|
date.setTime(date.getTime()+1000l);
|
|
|
addExpenseAccountLog(newEa.getId(),1,newEa.getProcessStatus(),aid,str,date);
|
|
|
- if (newEa.getProcessStatus()==EAProcessStatus.CWSH.getCode()){
|
|
|
+ if (newEa.getProcessStatus()==EAProcessStatus.BMFZRSH.getCode()){
|
|
|
addFinanceCount(admin.getDepFinance(),newEa.getCreateTime());
|
|
|
}
|
|
|
newEa.setProcessStatus(newEa.getProcessStatus()+1);
|
|
|
- if (newEa.getProcessStatus()<EAProcessStatus.WCSH.getCode())examineByprocess(newEa,admin);
|
|
|
+ if (newEa.getProcessStatus()<EAProcessStatus.CWSH.getCode())examineByprocess(newEa,admin);
|
|
|
}
|
|
|
-
|
|
|
+ return list;
|
|
|
}
|
|
|
|
|
|
private String getAdmins(List<Admin> list) {
|
|
|
@@ -831,17 +792,17 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
//1-3s是不同人的审核
|
|
|
if (in.getProcessStatus()!=null&&in.getProcessStatus()==1){
|
|
|
if (TokenManager.hasRole(AFTConstants.FINANCE)){
|
|
|
- in.setProcessStatus(2);
|
|
|
+ in.setProcessStatus(3);
|
|
|
}else if (TokenManager.hasRole(AFTConstants.SALESMAN_MANAGER)||TokenManager.hasRole(AFTConstants.SALESMAN_ADMIN)){
|
|
|
in.setProcessStatus(1);
|
|
|
}else if (TokenManager.hasRole(AFTConstants.APPROVAL_DECISION)||TokenManager.hasRole(AFTConstants.APPROVAL_DECISION_ASSISTANT)){
|
|
|
in.setProcessStatus(4);
|
|
|
}else if(TokenManager.hasRole(AFTConstants.FINANCE_MANAGER)){
|
|
|
//财务经理查看权限
|
|
|
- in.setProcessStatus(5);
|
|
|
+ in.setProcessStatus(6);
|
|
|
}else if(TokenManager.hasRole(AFTConstants.FINANCE_ADMIN)||TokenManager.hasRole(AFTConstants.SUPERADMIN)){
|
|
|
//财务管理员和超级管理员查看全部
|
|
|
- in.setProcessStatus(6);
|
|
|
+ in.setProcessStatus(5);
|
|
|
}
|
|
|
}else {
|
|
|
in.setProcessStatus(0);
|