Browse Source

优化审批流程

master
qqkj 5 years ago
parent
commit
da480b1828
  1. 42
      xm-core/src/main/java/com/xm/core/service/XmProjectService.java
  2. 23
      xm-core/src/main/java/com/xm/core/service/XmTaskExecuserService.java

42
xm-core/src/main/java/com/xm/core/service/XmProjectService.java

@ -168,25 +168,31 @@ public class XmProjectService extends BaseService {
String eventName=(String) flowVars.get("eventName");
String agree=(String) flowVars.get("agree");
String bizKey=(String) flowVars.get("bizKey");
XmProject bizProject=new XmProject();
if(!flowVars.containsKey("data")){
throw new BizException("缺乏项目信息,请将项目的待审批信息放在flowVars.data中");
}else{
if("xm_project_baseinfo_change_approva".equals(bizKey) ) { //项目基本信息修改
if(!flowVars.containsKey("data")) {
throw new BizException("缺乏项目信息,请将项目的基础信息及预算信息放在flowVars.data中");
bizProject= BaseUtils.fromMap((Map)flowVars.get("data"), XmProject.class);
if(!StringUtils.hasText(bizProject.getId())){
throw new BizException("缺乏项目编号,请将项目编号放在flowVars.data.id中上传");
}
if(StringUtils.isEmpty(bizProject.getBranchId())) {
throw new BizException("请上送机构编号flowVars.data.branchId");
}
}else if("xm_project_start_approva".equals(bizKey) ) { //项目立项
if(!flowVars.containsKey("data")) {
throw new BizException("缺乏项目信息,请将项目的基础信息及预算信息放在flowVars.data中");
}
if("xm_project_baseinfo_change_approva".equals(bizKey) ) { //项目基本信息修改
}else if("xm_project_start_approva".equals(bizKey) ) { //项目立项
}else if("xm_project_delay_approva".equals(bizKey) ) { //项目逾期
if(!flowVars.containsKey("data")) {
if(bizProject.getEndTime()==null) {
throw new BizException("缺乏日期信息,请将变更的日期信息放在flowVars.data.endTime中");
}
}else if("xm_project_over_approva".equals(bizKey) ) { //结项
if(!flowVars.containsKey("data")) {
throw new BizException("缺乏项目编号,请将项目编号放在flowVars.data.id中");
}
}else if("xm_project_budget_change_approva".equals(bizKey) ) { //总预算调整
if(!flowVars.containsKey("data")) {
if( bizProject.getPlanTotalCost() ==null ) {
throw new BizException("缺乏预算信息,请将变更的预算信息放在flowVars.data中");
}
}else if("xm_project_restart_approva".equals(bizKey) ) { //总预算调整
@ -211,7 +217,6 @@ public class XmProjectService extends BaseService {
}
}else {
XmProject bizProject=new XmProject();
bizProject= BaseUtils.fromMap((Map)flowVars.get("data"), XmProject.class);
flowVars.put("projectId", bizProject.getId());
if("PROCESS_STARTED".equals(eventName)) {
@ -233,6 +238,7 @@ public class XmProjectService extends BaseService {
throw new BizException("该项目正在审批中,不能再发起审批");
}
}
flowVars.put("id", this.createKey("id"));
this.insert("insertProcessApprova", flowVars);
this.updateFlowStateByProcInst("1", flowVars);
@ -248,16 +254,21 @@ public class XmProjectService extends BaseService {
project.setUrgent(bizProject.getUrgent());
project.setBaseRemark(bizProject.getBaseRemark());
project.setAssess(bizProject.getAssess());
project.setName(bizProject.getName());
project.setBudgetCtrl(bizProject.getBudgetCtrl());
project.setDescription(bizProject.getDescription());
project.setAssessRemarks(bizProject.getAssessRemarks());
//project.setCode(project.getCode());
this.updateSomeFieldByPk(project);
xmRecordService.addXmProjectRecord(bizProject.getId(), "项目-基本信息", "修改基本信息" );
this.createBaseline(bizProject.getId(),"项目修改基本信息");
}else if("xm_project_start_approva".equals(bizKey)) {//立项
}else if("xm_project_start_approva".equals(bizKey)) {//立项 立项通过需要把预算数据同步到财务系统把项目数据同步到财务系统
XmProject project=new XmProject();
project.setId(bizProject.getId());
project.setStatus("2");
//todo 立项通过需要把预算数据同步到财务系统把项目数据同步到财务系统
this.updateSomeFieldByPk(project);
xmRecordService.addXmProjectRecord(bizProject.getId(), "项目-立项", "项目立项通过审批" );
this.createBaseline(bizProject.getId(),"项目立项通过审批");
@ -275,7 +286,7 @@ public class XmProjectService extends BaseService {
this.updateSomeFieldByPk(project);
this.createBaseline(bizProject.getId(),"项目结项申请通过审批");
xmRecordService.addXmProjectRecord(bizProject.getId(), "项目-结项", "项目结项申请通过审批" );
}else if("xm_project_budget_change_approva".equals(bizKey) ) { //总预算调整
}else if("xm_project_budget_change_approva".equals(bizKey) ) { //总预算调整需要同步预算到财务系统
this.editBudget(bizProject);
@ -332,6 +343,9 @@ public class XmProjectService extends BaseService {
}
}
public XmProject editBudget(XmProject xmProject) {
//todo 同步预算数据到财务系统
BigDecimal planTotalCost=xmProject.getPlanTotalCost();
BigDecimal planInnerUserAt=xmProject.getPlanInnerUserAt();
BigDecimal planOutUserAt=xmProject.getPlanOutUserAt();

23
xm-core/src/main/java/com/xm/core/service/XmTaskExecuserService.java

@ -253,7 +253,6 @@ public class XmTaskExecuserService extends BaseService {
throw new BizException(xmTaskExecuser.getUsername()+"不在执行人列表中,不允许结算");
}
if("0".equals(xmTaskExecuserDB.getStatus())) {
throw new BizException(xmTaskExecuser.getUsername()+"候选排队中人员不能申请结算");
}
@ -263,13 +262,13 @@ public class XmTaskExecuserService extends BaseService {
throw new BizException(xmTaskExecuser.getUsername()+"无需结算");
}
if("4".equals(xmTaskExecuserDB.getSettleStatus())) {
throw new BizException(xmTaskExecuser.getUsername()+"已有申请在审核中,不能再申请");
throw new BizException(xmTaskExecuserDB.getUsername()+"已有申请在审核中,不能再申请");
}
if("6".equals(xmTaskExecuserDB.getSettleStatus())) {
throw new BizException(xmTaskExecuser.getUsername()+"已经结算完毕,不能再申请");
throw new BizException(xmTaskExecuserDB.getUsername()+"已经结算完毕,不能再申请");
}
if( !StringUtils.hasText(xmTaskExecuserDB.getSettleStatus()) && !"0".equals(xmTaskExecuserDB.getSettleStatus()) && !"1".equals(xmTaskExecuserDB.getSettleStatus()) && !"5".equals(xmTaskExecuserDB.getSettleStatus())) {
throw new BizException(xmTaskExecuser.getUsername()+"暂时还不能申请结算");
if( StringUtils.hasText(xmTaskExecuserDB.getSettleStatus()) && !"0".equals(xmTaskExecuserDB.getSettleStatus()) && !"1".equals(xmTaskExecuserDB.getSettleStatus()) && !"5".equals(xmTaskExecuserDB.getSettleStatus())) {
throw new BizException(xmTaskExecuserDB.getUsername()+"暂时还不能申请结算");
}
BigDecimal settleAmount=NumberUtil.getBigDecimal(xmTaskExecuser.getSettleAmount(), BigDecimal.ZERO);
BigDecimal quoteAmount=NumberUtil.getBigDecimal(xmTaskExecuserDB.getQuoteAmount(), BigDecimal.ZERO);
@ -281,15 +280,15 @@ public class XmTaskExecuserService extends BaseService {
userActCostAmount=NumberUtil.getBigDecimal(userActCostAmountRow.get("actCostAmount"),BigDecimal.ZERO);
}
if(settleAmount.add(userActCostAmount).compareTo(quoteAmount)>0) {
throw new BizException(xmTaskExecuser.getUsername()+"的结算金额不能大于报价金额,剩余"+quoteAmount.subtract(userActCostAmount)+"元可结算");
throw new BizException(xmTaskExecuserDB.getUsername()+"的结算金额不能大于报价金额,剩余"+quoteAmount.subtract(userActCostAmount)+"元可结算");
}
if(settleAmount.add(userActCostAmount).compareTo(taskBudgetCost)>0) {
throw new BizException(xmTaskExecuser.getUsername()+"的总结算金额不能大于任务总预算金额");
throw new BizException(xmTaskExecuserDB.getUsername()+"的总结算金额不能大于任务总预算金额");
}
}
if(allActCostAmount.add(addSettleAmount).compareTo(taskBudgetCost)>0) {
throw new BizException("结算总金额已经超出任务预算");
throw new BizException(task.getName()+"结算总金额已经超出任务预算");
}
for (XmTaskExecuser xmTaskExecuser : xmTaskExecuserList) {
@ -298,6 +297,7 @@ public class XmTaskExecuserService extends BaseService {
if(userActCostAmountRow!=null) {
userActCostAmount=NumberUtil.getBigDecimal(userActCostAmountRow.get("actCostAmount"),BigDecimal.ZERO);
}
XmTaskExecuser xmTaskExecuserDB =xmTaskExecuserDBMap.get(xmTaskExecuser.getUserid());
XmTaskExecuser xmTaskExecuser2=new XmTaskExecuser();
xmTaskExecuser2.setId(xmTaskExecuser.getId());
xmTaskExecuser2.setSettleStatus("4");
@ -307,11 +307,11 @@ public class XmTaskExecuserService extends BaseService {
this.updateSomeFieldByPk(xmTaskExecuser2);
projectId=xmTaskExecuser.getProjectId();
taskId=xmTaskExecuser.getTaskId();
usernames.add(xmTaskExecuser.getUsername());
usernames.add(xmTaskExecuserDB.getUsername());
XmProjectMCostUser costUser=new XmProjectMCostUser();
costUser.setUserid(xmTaskExecuser.getUserid());
costUser.setUsername(xmTaskExecuser.getUsername());
costUser.setUsername(xmTaskExecuserDB.getUsername());
costUser.setActCostAmount(xmTaskExecuser.getSettleAmount());
costUser.setActWorkload(xmTaskExecuser.getSettleWorkload());
costUser.setBizDate(DateUtils.getDate());
@ -456,7 +456,8 @@ public class XmTaskExecuserService extends BaseService {
flowVars.put("settleStatus", "4");
this.updateFlowStateByProcInst("1", flowVars);
}else if("PROCESS_COMPLETED".equals(eventName)) {
if("1".equals(agree)) {
if("1".equals(agree)) { //结算通过需要调用财务系统进行记账结算到用户的结算账户中//用户可以通过该账户提现取现金
// todo 需要调用财务系统进行记账结算到用户的结算账户中用户可以通过该账户提现取现金
//flowVars.put("settleStatus", "4");
this.updateFlowStateByProcInst("2", flowVars);
//结算通过,更新费用表状态未1申请通过

Loading…
Cancel
Save