|
|
@@ -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) {
|