|
|
@@ -12,6 +12,7 @@ import com.goafanti.common.enums.NoticeTypes;
|
|
|
import com.goafanti.common.error.BusinessException;
|
|
|
import com.goafanti.common.model.*;
|
|
|
import com.goafanti.common.utils.*;
|
|
|
+import com.goafanti.common.utils.excel.NewExcelUtil;
|
|
|
import com.goafanti.core.mybatis.BaseMybatisDao;
|
|
|
import com.goafanti.core.mybatis.JDBCIdGenerator;
|
|
|
import com.goafanti.core.mybatis.page.Pagination;
|
|
|
@@ -23,6 +24,7 @@ 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.beans.factory.annotation.Value;
|
|
|
import org.springframework.cache.annotation.CacheEvict;
|
|
|
import org.springframework.cache.annotation.Cacheable;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -62,9 +64,13 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
private DepartmentService departmentService;
|
|
|
@Autowired
|
|
|
private DepartmentMapper departmentMapper;
|
|
|
+ @Autowired
|
|
|
+ private ExpenseConfigDetailsMapper expenseConfigDetailsMapper;
|
|
|
|
|
|
|
|
|
|
|
|
+ @Value(value = "${upload.path}")
|
|
|
+ private final String uploadPath = null;
|
|
|
|
|
|
|
|
|
|
|
|
@@ -78,6 +84,7 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
in.setDistrictName(pr.getDistrictName());
|
|
|
in.setUserNames(pr.getUserNames());
|
|
|
in.setDuration(pr.getDuration());
|
|
|
+ if (in.getOrderNo()==null)in.setOrderNo(pr.getOrderNo());
|
|
|
}
|
|
|
//判断报销类型,0=固定费用,1=报销到订单
|
|
|
if (in.getOrderNo()==null){
|
|
|
@@ -123,23 +130,21 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
eae.setAuditorname(examineName);
|
|
|
ea.setExamineName(examineName);
|
|
|
}else if (i==2){
|
|
|
- if (dep.getManagerId()==null|| StringUtils.isBlank(dep.getManagerId())){
|
|
|
- throw new BusinessException("报销申请部门管理员不存在。");
|
|
|
+ if (StringUtils.isBlank(dep.getManagerName())){
|
|
|
+ throw new BusinessException("报销申请部门[管理员]不存在。");
|
|
|
}
|
|
|
eae.setAuditor(dep.getManagerId());
|
|
|
eae.setAuditorname(dep.getManagerName());
|
|
|
}else if (i==3){
|
|
|
- if (dep.getExpenseFinanceName()==null)throw new BusinessException("报销部门财务审核人不存在。");
|
|
|
+ if (StringUtils.isBlank(dep.getExpenseFinanceName()))throw new BusinessException("报销部门财务审核人不存在。");
|
|
|
eae.setAuditor(dep.getExpenseFinanceId());
|
|
|
eae.setAuditorname(dep.getExpenseFinanceName());
|
|
|
- }else if (i==4){
|
|
|
- eae.setAuditor(dep.getExpenseRetrialFinanceId());
|
|
|
- eae.setAuditorname(dep.getExpenseRetrialFinanceName());
|
|
|
}
|
|
|
- if (eae.getAuditor().equals(aid))eae.setStatus(1);
|
|
|
- else eae.setStatus(0);
|
|
|
- list.add(eae);
|
|
|
-
|
|
|
+ if (StringUtils.isNotEmpty(eae.getAuditor())){
|
|
|
+ if (eae.getAuditor().equals(aid))eae.setStatus(1);
|
|
|
+ else eae.setStatus(0);
|
|
|
+ list.add(eae);
|
|
|
+ }
|
|
|
}
|
|
|
expenseAccountExamineMapper.insertBatch(list);
|
|
|
}
|
|
|
@@ -161,7 +166,6 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
* @param str 备注
|
|
|
*/
|
|
|
private void addExpenseAccountLog(Integer eaid, Integer status,Integer processStatus,String aid, String str,Date date) {
|
|
|
- if (aid==null)aid=TokenManager.getAdminId();
|
|
|
ExpenseAccountLog eaLog=new ExpenseAccountLog();
|
|
|
eaLog.setEaid(eaid);
|
|
|
eaLog.setStatus(status);
|
|
|
@@ -180,12 +184,20 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
addExpenseAccountLog(in.getId(),status,in.getProcessStatus(),aid,str);
|
|
|
if (status==0)in.setProcessStatus(1);
|
|
|
Admin admin = adminMapper.selectByPrimaryKey(aid);
|
|
|
- if (admin.getSuperiorId()==null||admin.getId().equals(admin.getSuperiorId())){
|
|
|
- String str2=String.format("重复审核人跳过[%s]。",EAProcessStatus.getDesc(in.getProcessStatus()));
|
|
|
+ if (admin.getExpenseSuperExamine()==0){
|
|
|
+ String str2=String.format("未设置[%s]审核。",EAProcessStatus.getDesc(in.getProcessStatus()));
|
|
|
Date date=new Date();
|
|
|
date.setTime(date.getTime()+1000L);
|
|
|
addExpenseAccountLog(in.getId(),1,in.getProcessStatus(),aid,str2,date);
|
|
|
in.setProcessStatus(in.getProcessStatus()+1);
|
|
|
+ }else {
|
|
|
+ if (admin.getSuperiorId()==null||admin.getId().equals(admin.getSuperiorId())){
|
|
|
+ String str2=String.format("重复审核人跳过[%s]。",EAProcessStatus.getDesc(in.getProcessStatus()));
|
|
|
+ Date date=new Date();
|
|
|
+ date.setTime(date.getTime()+1000L);
|
|
|
+ addExpenseAccountLog(in.getId(),1,in.getProcessStatus(),aid,str2,date);
|
|
|
+ in.setProcessStatus(in.getProcessStatus()+1);
|
|
|
+ }
|
|
|
}
|
|
|
createExamineByProcess(in);
|
|
|
}
|
|
|
@@ -197,7 +209,11 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
private void createExamineByProcess(ExpenseAccount in) {
|
|
|
//审核流程推送到最新
|
|
|
AdminListBo admin = adminMapper.getDeptNameByAid(in.getAid());
|
|
|
- List<ExpenseAccountExamine> list=examineByprocess(in,admin);
|
|
|
+ OrganizationListOut dep = departmentMapper.selectAllById(in.getApplyDep());
|
|
|
+ List<ExpenseConfigDetails> configDetailsList = expenseConfigDetailsMapper.selectByDepId(in.getApplyDep());
|
|
|
+ if (in.getApproval()==null)in.setApproval(0);
|
|
|
+ examineByprocess(in,admin,dep,configDetailsList);
|
|
|
+ List<ExpenseAccountExamine> list=expenseAccountExamineMapper.selectByEaidAndProcessStatus(in.getId(), in.getProcessStatus());
|
|
|
List<Admin> aids=new ArrayList<>();
|
|
|
StringBuffer aname =new StringBuffer();
|
|
|
for (ExpenseAccountExamine e : list) {
|
|
|
@@ -247,13 +263,12 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
}
|
|
|
}
|
|
|
if (in.getSettlementAmount()==null)in.setSettlementAmount(useEA.getSettlementAmount());
|
|
|
- in.setAmount(in.getRealAmount().subtract(in.getSettlementAmount()));
|
|
|
- in.setRealAmount(in.getAmount());
|
|
|
in.setStatus(0);
|
|
|
return expenseAccountMapper.updateByPrimaryKeySelective(in);
|
|
|
}
|
|
|
|
|
|
private void pushExpenseAccountAmount(ExpenseAccount in) {
|
|
|
+ OutExpenseAccount useEA = expenseAccountMapper.selectByid(in.getId());
|
|
|
List<OutExpenseAccountDetails> list = expenseAccountDetailsMapper.selectByEAid(in.getId());
|
|
|
BigDecimal totalAmount = BigDecimal.ZERO;
|
|
|
BigDecimal realAmount = BigDecimal.ZERO;
|
|
|
@@ -262,7 +277,8 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
realAmount=realAmount.add(e.getRealAmount());
|
|
|
}
|
|
|
in.setTotalAmount(totalAmount);
|
|
|
- in.setRealAmount(realAmount);
|
|
|
+ in.setAmount(realAmount.subtract(useEA.getSettlementAmount()));
|
|
|
+ in.setRealAmount(in.getAmount());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -273,6 +289,86 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public Object delete(String ids) {
|
|
|
+ String[] split = ids.split(",");
|
|
|
+ for (String s : split) {
|
|
|
+ Integer id=Integer.valueOf(s);
|
|
|
+ ExpenseAccount expenseAccount = expenseAccountMapper.selectByPrimaryKey(id);
|
|
|
+ if (expenseAccount.getStatus()!=0&&expenseAccount.getStatus()!=3){
|
|
|
+ throw new BusinessException("该费用单状态无法删除");
|
|
|
+ }
|
|
|
+ List<OutExpenseAccountLog> logs = expenseAccountLogMapper.selectByEaid(id);
|
|
|
+ if (logs.isEmpty()){
|
|
|
+ expenseAccountMapper.deleteByPrimaryKey(id);
|
|
|
+ }else {
|
|
|
+ ExpenseAccount update =new ExpenseAccount();
|
|
|
+ update.setId(id);
|
|
|
+ update.setStatus(4);
|
|
|
+ expenseAccountMapper.updateByPrimaryKeySelective(update);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Object pageListExport(InputPageListBo in) {
|
|
|
+ List<OutExpenseAccountBo> list = (List<OutExpenseAccountBo>) pageList(in).getList();
|
|
|
+ for (OutExpenseAccountBo e : list) {
|
|
|
+ if (e.getTargetType()!=null){
|
|
|
+ if (e.getTargetType()==0){
|
|
|
+ e.setTargetName("固定费用");
|
|
|
+ }else {
|
|
|
+ e.setTargetName(e.getContractNo()+"-"+e.getBuyerName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (e.getType()!=0){
|
|
|
+ e.setTypeOther(EATypes.getDescByCode(e.getType()));
|
|
|
+ }else{
|
|
|
+ e.setTypeOther(String.format("其他(%s)",e.getTypeOther()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ NewExcelUtil excelUtil=new NewExcelUtil(OutExpenseAccountBo.class);
|
|
|
+ return excelUtil.exportExcel(list,"费用单列表",uploadPath);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Object detailsListExport(InputDetailsListBo in) {
|
|
|
+ List<OutExpenseAccountDetailsList> list = (List<OutExpenseAccountDetailsList>) detailsList(in).getList();
|
|
|
+ for (OutExpenseAccountDetailsList e : list) {
|
|
|
+ if (e.getTargetType()!=null){
|
|
|
+ if (e.getTargetType()==0){
|
|
|
+ e.setTargetName("固定费用");
|
|
|
+ }else {
|
|
|
+ e.setTargetName(e.getContractNo()+"-"+e.getBuyerName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (e.getType()!=0){
|
|
|
+ e.setTypeOther(EAsecondaryTypes.getDescByCode(e.getType()));
|
|
|
+ }else{
|
|
|
+ //如果是其他,又说明显示说明,没有说明显示费用类型
|
|
|
+ if (StringUtils.isBlank(e.getTypeOther())){
|
|
|
+ if (e.getSonType()!=0){
|
|
|
+ e.setTypeOther(EATypes.getDescByCode(e.getSonType()));
|
|
|
+ }else{
|
|
|
+ e.setTypeOther(String.format("其他(%s)",e.getSonTypeOther()));
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ e.setTypeOther(String.format("其他(%s)",e.getTypeOther()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ NewExcelUtil excelUtil=new NewExcelUtil(OutExpenseAccountDetailsList.class);
|
|
|
+ return excelUtil.exportExcel(list,"费用详细列表",uploadPath);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Object getDepDetails(Integer id) {
|
|
|
+ OutExpenseAccount outExpenseAccount = expenseAccountMapper.selectByid(id);
|
|
|
+ OrganizationListOut organizationListOut = departmentMapper.selectAllById(outExpenseAccount.getApplyDep());
|
|
|
+ return organizationListOut;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
private void pushResettingDebit(InputExpenseAccount in, Integer debitId) {
|
|
|
ExpenseAccount debit = expenseAccountMapper.selectByPrimaryKey(debitId);
|
|
|
@@ -361,16 +457,84 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
@Override
|
|
|
public Object logList(Integer eaid) {
|
|
|
List<OutExpenseAccountLog> list = expenseAccountLogMapper.selectByEaid(eaid);
|
|
|
- if (!list.isEmpty()){
|
|
|
- OutExpenseAccountLog lastout=list.get(list.size()-1);
|
|
|
- if (lastout.getStatus()!=3){
|
|
|
- List<OutExpenseAccountLog> eaelist = expenseAccountExamineMapper.selectNotExamineByEaidAndProcessStatus(eaid, lastout.getProcessStatus());
|
|
|
- list.addAll(eaelist);
|
|
|
+ if (!list.isEmpty()) {
|
|
|
+ OutExpenseAccountLog lastout = list.get(list.size() - 1);
|
|
|
+ ExpenseAccount expenseAccount = expenseAccountMapper.selectByPrimaryKey(eaid);
|
|
|
+ Integer processStatus = lastout.getProcessStatus();
|
|
|
+ if (lastout.getStatus() < 2) {
|
|
|
+ if (processStatus <3){
|
|
|
+ List<OutExpenseAccountLog> outExpenseAccountLogs = expenseAccountExamineMapper.selectNotExamineByEaidAndProcessStatus(eaid, processStatus);
|
|
|
+ list.addAll(outExpenseAccountLogs);
|
|
|
+ }
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ private void addDetailsLog(List<OutExpenseAccountLog> list, ExpenseAccount expenseAccount,Integer useStatus) {
|
|
|
+ OrganizationListOut dep = departmentMapper.selectAllById(expenseAccount.getApplyDep());
|
|
|
+ List<ExpenseConfigDetails> configDetails = expenseConfigDetailsMapper.selectByDepId(expenseAccount.getApplyDep());
|
|
|
+ for (int processStatus = useStatus; processStatus < 8; processStatus++) {
|
|
|
+ if (processStatus ==3){
|
|
|
+ if (dep.getExpenseRetrialFinanceExamine()==1){
|
|
|
+ List<ExpenseConfigDetails> collect = configDetails.stream().filter(e -> e.getType() == 1).collect(Collectors.toList());
|
|
|
+ for (ExpenseConfigDetails e : collect) {
|
|
|
+ addDetailsTypeLog(list, expenseAccount, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else if (processStatus ==4){
|
|
|
+ if (expenseAccount.getApproval()==1&&dep.getCeoExamine()==1){
|
|
|
+ List<ExpenseConfigDetails> collect = configDetails.stream().filter(e -> e.getType() == 2).collect(Collectors.toList());
|
|
|
+ for (ExpenseConfigDetails e : collect) {
|
|
|
+ addDetailsTypeLog(list, expenseAccount, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else if (processStatus ==5){
|
|
|
+ if (dep.getCfoExamine()==1){
|
|
|
+ List<ExpenseConfigDetails> collect = configDetails.stream().filter(e -> e.getType() == 3).collect(Collectors.toList());
|
|
|
+ for (ExpenseConfigDetails e : collect) {
|
|
|
+ addDetailsTypeLog(list, expenseAccount, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else if (processStatus ==6){
|
|
|
+ if (dep.getViceCeoExamine()==1){
|
|
|
+ List<ExpenseConfigDetails> collect = configDetails.stream().filter(e -> e.getType() == 4).collect(Collectors.toList());
|
|
|
+ for (ExpenseConfigDetails e : collect) {
|
|
|
+ addDetailsTypeLog(list, expenseAccount, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else if (processStatus ==7){
|
|
|
+ if (dep.getCashierExamine()==1){
|
|
|
+ List<ExpenseConfigDetails> collect = configDetails.stream().filter(e -> e.getType() == 5).collect(Collectors.toList());
|
|
|
+ for (ExpenseConfigDetails e : collect) {
|
|
|
+ addDetailsTypeLog(list, expenseAccount, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- return list;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
+ private static void addDetailsTypeLog(List<OutExpenseAccountLog> list, ExpenseAccount expenseAccount, ExpenseConfigDetails e) {
|
|
|
+ OutExpenseAccountLog addLog=new OutExpenseAccountLog();
|
|
|
+ addLog.setEaid(expenseAccount.getId());
|
|
|
+ addLog.setAuditor(e.getAid());
|
|
|
+ addLog.setAuditorName(e.getAdminName());
|
|
|
+ list.add(addLog);
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
|
|
@@ -379,10 +543,12 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
ExpenseAccount useEa = expenseAccountMapper.selectByPrimaryKey(in.getId());
|
|
|
ExpenseAccount newEa=new ExpenseAccount();
|
|
|
newEa.setId(useEa.getId());
|
|
|
+ newEa.setApproval(in.getApproval());
|
|
|
in.setCheckNo(useEa.getCheckNo());
|
|
|
in.setProcessStatus(useEa.getProcessStatus());
|
|
|
//审核通知 获取发送人
|
|
|
AdminListBo admin = adminMapper.getDeptNameByAid(useEa.getAid());
|
|
|
+ //项目推送流程及添加日志
|
|
|
addExamineExpenseAccountLog(admin,in, useEa, newEa);
|
|
|
//完成申请
|
|
|
if (newEa.getStatus()==2){
|
|
|
@@ -449,9 +615,9 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
}else if (newEa.getProcessStatus()>EAProcessStatus.CWSH.getCode()){
|
|
|
pushFinanceCount(admin.getDepFinance(),useEa.getCreateTime(),3);
|
|
|
}
|
|
|
+ expenseAccountExamineMapper.updateStatusByEaidAndAid(in.getId(),null,0,0);
|
|
|
}
|
|
|
- //审核处理审核表
|
|
|
- pushExpenseAccountExamine(in);
|
|
|
+
|
|
|
expenseAccountMapper.updateByPrimaryKeySelective(newEa);
|
|
|
expenseAccountMapper.updateSonByMainId(newEa.getId());
|
|
|
return 1;
|
|
|
@@ -479,69 +645,100 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void pushExpenseAccountExamine(InputExpenseAccount in) {
|
|
|
- if (in.getStatus()==1){
|
|
|
- expenseAccountExamineMapper.updateStatusByEaidAndAid(in.getId(),TokenManager.getAdminId(),1);
|
|
|
- }else if (in.getStatus()==3){
|
|
|
- expenseAccountExamineMapper.updateStatusByEaidAndAid(in.getId(),null,0);
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
private void addExamineExpenseAccountLog(AdminListBo admin,InputExpenseAccount in, ExpenseAccount useEa, ExpenseAccount newEa) {
|
|
|
List<Admin> aids=new ArrayList<>();
|
|
|
StringBuffer str=new StringBuffer();
|
|
|
Integer status=in.getStatus();
|
|
|
-
|
|
|
if (status==1){
|
|
|
+ //审核处理审核表
|
|
|
+ expenseAccountExamineMapper.updateStatusByEaidAndAid(in.getId(),TokenManager.getAdminId(),1,0);
|
|
|
str=str.append("编号[").append(in.getCheckNo()).append("]需要审核").append(",请查看并审核。");
|
|
|
- //新的流程是当前流程+1
|
|
|
- newEa.setProcessStatus(useEa.getProcessStatus()+1);
|
|
|
newEa.setAid(useEa.getAid());
|
|
|
newEa.setCreateTime(useEa.getCreateTime());
|
|
|
- List<ExpenseAccountExamine> list=examineByprocess(newEa,admin);
|
|
|
- if(newEa.getProcessStatus()==4){
|
|
|
- //完成后的流程
|
|
|
- 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 {
|
|
|
- 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.setApplyDep(useEa.getApplyDep());
|
|
|
+ //在跳入董事长审核的时候非特批直接跳过,原则上下个流程不可再跳过
|
|
|
+ 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;
|
|
|
+ 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);
|
|
|
+ if (useEa.getProcessStatus()<EAProcessStatus.CWFS.getCode()){
|
|
|
+ newEa.setProcessStatus(useEa.getProcessStatus()+1);
|
|
|
+ }else {
|
|
|
+ newEa.setProcessStatus(useEa.getProcessStatus());
|
|
|
+ }
|
|
|
+ if (newEa.getApproval()==null)newEa.setApproval(useEa.getApproval());
|
|
|
+ //流程的推动
|
|
|
+ examineByprocess(newEa,admin,dep,configDetailsList);
|
|
|
+ //推动到出纳如果设置无需则完成不设置下个人,否则就要设置
|
|
|
+ if (newEa.getProcessStatus()==EAProcessStatus.CNSH.getCode()){
|
|
|
+ if(dep.getCashierExamine()==1){
|
|
|
+ pushExamineName(newEa, aids);
|
|
|
+ }else {
|
|
|
+ //完成后的流程
|
|
|
+ status =2;
|
|
|
+ aids.add(adminMapper.selectByPrimaryKey(admin.getId()));
|
|
|
+ newEa.setStatus(status);
|
|
|
+ newEa.setExamineName("");
|
|
|
}
|
|
|
+ }else {
|
|
|
+ pushExamineName(newEa, aids);
|
|
|
}
|
|
|
- newEa.setExamineName(aname.substring(0,aname.length()-1));
|
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
|
|
}else {
|
|
|
aids.add(adminMapper.selectByPrimaryKey(admin.getId()));
|
|
|
newEa.setStatus(3);
|
|
|
newEa.setProcessStatus(0);
|
|
|
str.setLength(0);
|
|
|
+ addExpenseAccountLog(in.getId(),newEa.getStatus(),useEa.getProcessStatus(),TokenManager.getAdminId(),in.getReason());
|
|
|
str=str.append("您的报销审核已驳回,报销编号[").append(in.getCheckNo()).append("],请注意查看。");
|
|
|
}
|
|
|
if (newEa.getStatus()==null)newEa.setStatus(1);
|
|
|
- addExpenseAccountLog(in.getId(),status,useEa.getProcessStatus(),TokenManager.getAdminId(),in.getReason());
|
|
|
addNoticeAndEmail(in, status,str.toString(),admin.getName(),aids);
|
|
|
}
|
|
|
|
|
|
+ private void pushExamineName(ExpenseAccount newEa, List<Admin> aids) {
|
|
|
+ List<ExpenseAccountExamine> list=expenseAccountExamineMapper.selectByEaidAndProcessStatus(newEa.getId(), newEa.getProcessStatus());
|
|
|
+ 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));
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
*
|
|
|
* @param aid
|
|
|
@@ -576,50 +773,170 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
/**
|
|
|
* 审核流程推送,只要不是完成状态就继续判断是否跳过
|
|
|
* @param newEa
|
|
|
*/
|
|
|
- private List<ExpenseAccountExamine> examineByprocess( ExpenseAccount newEa,AdminListBo admin) {
|
|
|
- //获取当前流程审核人,如果有已审核则跳过当前审核
|
|
|
- List<ExpenseAccountExamine> list = expenseAccountExamineMapper.selectByEaidAndProcessStatus(newEa.getId(), newEa.getProcessStatus());
|
|
|
- boolean flag=false;
|
|
|
- String aid="";
|
|
|
- for (ExpenseAccountExamine e : list) {
|
|
|
- if (e.getStatus()==1){
|
|
|
- flag=true;
|
|
|
- aid=e.getAuditor();
|
|
|
- break;
|
|
|
+ private void examineByprocess( ExpenseAccount newEa,AdminListBo admin,OrganizationListOut dep,List<ExpenseConfigDetails> list) {
|
|
|
+ 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);
|
|
|
+ examineByprocess(newEa,admin,dep,list);
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
- 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());
|
|
|
+ }else {
|
|
|
+ //大于等于财务复审的,走多审核
|
|
|
+ String str=null;
|
|
|
+ //跳过标记
|
|
|
+ boolean flag2= false;
|
|
|
+ //审核通过标记
|
|
|
+ boolean flag3= false;
|
|
|
+ Date date2=new Date();
|
|
|
+ date2.setTime(date2.getTime()+1000l);
|
|
|
+ String tip=null;
|
|
|
+ String aid=null;
|
|
|
+ if (newEa.getProcessStatus()==EAProcessStatus.CWFS.getCode()){
|
|
|
+ //财务复审财务复审
|
|
|
+ if (dep.getExpenseRetrialFinanceExamine()==0){
|
|
|
+ flag2=true;
|
|
|
+ tip=EAProcessStatus.CWFS.getDesc();
|
|
|
+ }else {
|
|
|
+ boolean expenseExamine = pushExpenseExamine(list, newEa, EAProcessStatus.CWFS.getCode());
|
|
|
+ if (expenseExamine){
|
|
|
+ flag3=true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else if (newEa.getProcessStatus()==EAProcessStatus.DSZSH.getCode()){
|
|
|
+ if (newEa.getApproval()!=1){
|
|
|
+ flag2=true;
|
|
|
+ tip="特批(财务选择)";
|
|
|
+ }else {
|
|
|
+ if (dep.getCeoExamine()==1){
|
|
|
+ boolean expenseExamine = pushExpenseExamine(list, newEa, EAProcessStatus.DSZSH.getCode());
|
|
|
+ if (expenseExamine){
|
|
|
+ flag3=true;
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ flag2=true;
|
|
|
+ tip="特批(部门设置)";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else if (newEa.getProcessStatus()==EAProcessStatus.CWGGLYSH.getCode()){
|
|
|
+ if (dep.getExpenseRetrialFinanceExamine()==0){
|
|
|
+ flag2=true;
|
|
|
+ tip=EAProcessStatus.CWGGLYSH.getDesc();
|
|
|
+ aid=null;
|
|
|
+ }else {
|
|
|
+ boolean expenseExamine = pushExpenseExamine(list, newEa, EAProcessStatus.CWGGLYSH.getCode());
|
|
|
+ if (expenseExamine){
|
|
|
+ flag3=true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else if (newEa.getProcessStatus()==EAProcessStatus.GSFSSH.getCode()){
|
|
|
+ if (dep.getExpenseRetrialFinanceExamine()==0){
|
|
|
+ flag2=true;
|
|
|
+ tip=EAProcessStatus.GSFSSH.getDesc();
|
|
|
+ }else {
|
|
|
+ boolean expenseExamine = pushExpenseExamine(list, newEa, EAProcessStatus.GSFSSH.getCode());
|
|
|
+ if (expenseExamine){
|
|
|
+ flag3=true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else if (newEa.getProcessStatus()==EAProcessStatus.CNSH.getCode()){
|
|
|
+ if (dep.getExpenseRetrialFinanceExamine()==0){
|
|
|
+ flag2=true;
|
|
|
+ tip=EAProcessStatus.CNSH.getDesc();
|
|
|
+ }else {
|
|
|
+ //财务出纳在审核时不与前置审核做同步
|
|
|
+ pushExpenseExamine(list, newEa, EAProcessStatus.CNSH.getCode());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (flag2){
|
|
|
+ if (str==null)str=String.format("未设置[%s]审核,跳过此流程",tip);
|
|
|
+ if (newEa.getProcessStatus()<EAProcessStatus.CNSH.getCode()){
|
|
|
+ date2.setTime(date2.getTime()+100);
|
|
|
+ addExpenseAccountLog(newEa.getId(),1,newEa.getProcessStatus(),aid,str,date2);
|
|
|
+ newEa.setProcessStatus(newEa.getProcessStatus()+1);
|
|
|
+ examineByprocess(newEa,admin,dep,list);
|
|
|
+ }else {
|
|
|
+ date2.setTime(date2.getTime()+100);
|
|
|
+ addExpenseAccountLog(newEa.getId(),2,newEa.getProcessStatus(),aid,str,date2);
|
|
|
+ newEa.setProcessStatus(newEa.getProcessStatus());
|
|
|
+ newEa.setStatus(2);
|
|
|
+ }
|
|
|
+ }else if (flag3){
|
|
|
+ newEa.setProcessStatus(newEa.getProcessStatus()+1);
|
|
|
+ examineByprocess(newEa,admin,dep,list);
|
|
|
}
|
|
|
- newEa.setProcessStatus(newEa.getProcessStatus()+1);
|
|
|
- if (newEa.getProcessStatus()<EAProcessStatus.CWSH.getCode())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(",");
|
|
|
+ private boolean pushExpenseExamine(List<ExpenseConfigDetails> list, ExpenseAccount newEa, Integer status) {
|
|
|
+ int configDetails=0;
|
|
|
+ if (status==EAProcessStatus.CWFS.getCode())configDetails=1;
|
|
|
+ else if (status==EAProcessStatus.DSZSH.getCode())configDetails=2;
|
|
|
+ else if (status==EAProcessStatus.CWGGLYSH.getCode())configDetails=3;
|
|
|
+ else if (status==EAProcessStatus.GSFSSH.getCode())configDetails=4;
|
|
|
+ else if (status==EAProcessStatus.CNSH.getCode())configDetails=5;
|
|
|
+ int finalConfigDetails = configDetails;
|
|
|
+ //查询审核表,如果为空就新增,不然直接判定审核
|
|
|
+ List<ExpenseAccountExamine> expenseAccountExamines = expenseAccountExamineMapper.selectByEaidAndProcessStatus(newEa.getId(), status);
|
|
|
+ int count = 0;
|
|
|
+ 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);
|
|
|
+ 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++;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- return str.substring(0,str.length()-1);
|
|
|
+ if (count==size){
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
private void addNoticeAndEmail(ExpenseAccount in, Integer status, String str,String aname, List<Admin> aids) {
|
|
|
@@ -654,7 +971,7 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Object pageList(InputPageListBo in) {
|
|
|
+ public Pagination<?> pageList(InputPageListBo in) {
|
|
|
Map<String ,Object> param=new HashMap<>();
|
|
|
addParam(in, param);
|
|
|
Pagination<?> pagePlus = findPagePlus("selectExpenseAccountList",
|
|
|
@@ -679,7 +996,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);
|
|
|
|
|
|
@@ -745,12 +1062,22 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
in.setExpenseMain(1);
|
|
|
in.setTypeOther(String.join(",",typeList));
|
|
|
expenseAccountMapper.insertSelective(in);
|
|
|
+ List<OutExpenseAccountLog> newLog=new ArrayList<>();
|
|
|
list.stream().forEach(e -> {
|
|
|
ExpenseRelationship er=new ExpenseRelationship();
|
|
|
er.setId(in.getId());
|
|
|
er.setEaId(e.getId());
|
|
|
expenseRelationshipMapper.insertSelective(er);
|
|
|
+ List<OutExpenseAccountLog> listLog = expenseAccountLogMapper.selectByEaid(e.getId());
|
|
|
+ for (OutExpenseAccountLog log : listLog) {
|
|
|
+ if (!newLog.contains(log)){
|
|
|
+ log.setEaid(in.getId());
|
|
|
+ newLog.add(log);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ expenseAccountLogMapper.deleteByeaid(e.getId());
|
|
|
});
|
|
|
+ if (!newLog.isEmpty())expenseAccountLogMapper.insertBatch(newLog);
|
|
|
expenseAccountMapper.updateByIds(list,1);
|
|
|
return in.getId();
|
|
|
}
|
|
|
@@ -759,17 +1086,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;
|
|
|
}
|
|
|
@@ -783,26 +1103,12 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
ExpenseAccount update =new ExpenseAccount();
|
|
|
if (in.getStatus()==null)in.setStatus(1);
|
|
|
if (in.getStatus()==1){
|
|
|
- if (in.getOrderNo()!=null){
|
|
|
- update.setOrderNo(in.getOrderNo());
|
|
|
- update.setTargetType(1);
|
|
|
- }
|
|
|
if (in.getPayDep()!=null)update.setPayDep(in.getPayDep());
|
|
|
if (in.getApplyDep()!=null)update.setApplyDep(in.getApplyDep());
|
|
|
if (in.getRemarks()!=null)update.setRemarks(in.getRemarks());
|
|
|
if (in.getEaaid()!=null)update.setEaaid(in.getEaaid());
|
|
|
addExpenseAccountExamine(in.getId(),update);
|
|
|
if (outExpenseAccount.getStatus()==0){
|
|
|
- //补旧日志
|
|
|
- MainExpenseAccount mianEA = expenseAccountMapper.selectByMainId(in.getId());
|
|
|
- List<Integer> collect = mianEA.getSonList().stream().map(SonExpenseAccount::getId).collect(Collectors.toList());
|
|
|
- if (!collect.isEmpty()){
|
|
|
- Integer i = expenseAccountMapper.selectDeleteIdBySonId(collect.get(0));
|
|
|
- if (i !=null)
|
|
|
- expenseAccountLogMapper.updateUseLogByUseId(in.getId(),i);
|
|
|
- expenseAccountLogMapper.deleteByeaid(i);
|
|
|
- expenseRelationshipMapper.deleteByPrimaryKey(i);
|
|
|
- }
|
|
|
addExpenseAccountLogAndNoticEmail(outExpenseAccount,outExpenseAccount.getStatus(),"发起报销审核");
|
|
|
}else if (outExpenseAccount.getStatus()==3){
|
|
|
addExpenseAccountLogAndNoticEmail(outExpenseAccount,4,"修改并发起审核");
|
|
|
@@ -814,8 +1120,26 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
expenseAccountMapper.updateByPrimaryKeySelective(update);
|
|
|
}else if (in.getStatus()==4){
|
|
|
expenseAccountMapper.updateByMainId(in.getId(),0);
|
|
|
+ addExpenseAccountLog(in.getId(),4,0,TokenManager.getAdminId(),"撤销报销审核");
|
|
|
+ List<ExpenseRelationship> list = expenseRelationshipMapper.selectById(in.getId());
|
|
|
+ //撤销日志处理,先将日志改在挂子编号上,在新发起的时候再从自编号加到新编号上
|
|
|
+ if (list.size()==1){
|
|
|
+ ExpenseRelationship e =list.get(0);
|
|
|
+ expenseAccountLogMapper.updateUseLogByUseId(e.getEaId(),e.getId());
|
|
|
+ }else {
|
|
|
+ List<OutExpenseAccountLog> outExpenseAccountLogs = expenseAccountLogMapper.selectByEaid(in.getId());
|
|
|
+ for (int i=0;i<list.size();i++){
|
|
|
+ ExpenseRelationship e =list.get(i);
|
|
|
+ for (OutExpenseAccountLog eal : outExpenseAccountLogs) {
|
|
|
+
|
|
|
+ eal.setEaid(e.getEaId());
|
|
|
+ }
|
|
|
+ expenseAccountLogMapper.insertBatch(outExpenseAccountLogs);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ expenseAccountLogMapper.deleteByeaid(in.getId());
|
|
|
+ expenseRelationshipMapper.deleteByPrimaryKey(in.getId());
|
|
|
expenseAccountMapper.deleteByPrimaryKey(in.getId());
|
|
|
- addExpenseAccountLog(in.getId(),4,0,in.getAid(),"撤销报销审核");
|
|
|
}
|
|
|
return 1;
|
|
|
}
|
|
|
@@ -833,17 +1157,19 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
}
|
|
|
//1-3s是不同人的审核
|
|
|
if (in.getProcessStatus()!=null&&in.getProcessStatus()==1){
|
|
|
+ // 财务审核,复审,出纳都是财务与经理
|
|
|
if (TokenManager.hasRole(AFTConstants.FINANCE)||TokenManager.hasRole(AFTConstants.FINANCE_MANAGER)){
|
|
|
- in.setProcessStatus(3);
|
|
|
- }else if (TokenManager.hasRole(AFTConstants.SALESMAN_MANAGER)||TokenManager.hasRole(AFTConstants.SALESMAN_ADMIN)){
|
|
|
- in.setProcessStatus(1);
|
|
|
+ in.setProcessStatus(3);
|
|
|
+ }else if (TokenManager.hasRole(AFTConstants.SALESMAN_MANAGER)){
|
|
|
+ in.setProcessStatus(1);
|
|
|
+ }else if (TokenManager.hasRole(AFTConstants.SALESMAN_ADMIN)){
|
|
|
+ in.setProcessStatus(2);
|
|
|
}else if (TokenManager.hasRole(AFTConstants.APPROVAL_DECISION)||TokenManager.hasRole(AFTConstants.APPROVAL_DECISION_ASSISTANT)){
|
|
|
- in.setProcessStatus(4);
|
|
|
- }else if(false){
|
|
|
- //先不做财务查看权限
|
|
|
in.setProcessStatus(5);
|
|
|
- }else if(TokenManager.hasRole(AFTConstants.FINANCE_ADMIN)||TokenManager.hasRole(AFTConstants.SUPERADMIN)){
|
|
|
- //财务管理员和超级管理员查看全部
|
|
|
+ }else if(TokenManager.hasRole(AFTConstants.VICE_CEO)){
|
|
|
+ //先不做财务查看权限
|
|
|
+ in.setProcessStatus(7);
|
|
|
+ }else if(TokenManager.hasRole(AFTConstants.FINANCE_ADMIN)){
|
|
|
in.setProcessStatus(6);
|
|
|
}
|
|
|
}else {
|
|
|
@@ -875,7 +1201,7 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Object detailsList(InputDetailsListBo in) {
|
|
|
+ public Pagination<?> detailsList(InputDetailsListBo in) {
|
|
|
Map<String,Object> params = new HashMap<>();
|
|
|
if(in.getStatus()!=null)params.put("status",in.getStatus());
|
|
|
if(in.getType()!=null)params.put("type",in.getType());
|
|
|
@@ -949,29 +1275,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);
|