|
@@ -13,20 +13,13 @@ import com.dayou.dto.HandlerPermissionDTO;
|
|
|
import com.dayou.dto.WorkNodeCommit;
|
|
|
import com.dayou.dto.WorkNodeDTO;
|
|
|
import com.dayou.entity.*;
|
|
|
+import com.dayou.enums.GlobalConfigEnum;
|
|
|
import com.dayou.enums.MainBusinessEnum;
|
|
|
-import com.dayou.enums.workflow.HandlerPermissionEnum;
|
|
|
-import com.dayou.enums.workflow.NodeLogEnum;
|
|
|
-import com.dayou.enums.workflow.NodeStateEnum;
|
|
|
-import com.dayou.enums.workflow.WorkflowNodeEnum;
|
|
|
+import com.dayou.enums.ProductionEnum;
|
|
|
+import com.dayou.enums.workflow.*;
|
|
|
import com.dayou.exception.ErrorCode;
|
|
|
-import com.dayou.mapper.DepartmentMapper;
|
|
|
-import com.dayou.mapper.MajorMapper;
|
|
|
-import com.dayou.mapper.PersonalMapper;
|
|
|
-import com.dayou.mapper.WorkTaskRecordMapper;
|
|
|
-import com.dayou.service.IDepartmentService;
|
|
|
-import com.dayou.service.IGlobalConfigService;
|
|
|
-import com.dayou.service.IUserPostService;
|
|
|
-import com.dayou.service.IUserService;
|
|
|
+import com.dayou.mapper.*;
|
|
|
+import com.dayou.service.*;
|
|
|
import com.dayou.service.workflow.IWorkFlowLogService;
|
|
|
import com.dayou.service.workflow.IWorkFlowNodeInstanceService;
|
|
|
import com.dayou.service.workflow.IWorkNodeService;
|
|
@@ -45,6 +38,8 @@ import java.util.stream.Collectors;
|
|
|
|
|
|
import static com.dayou.common.Constants.MAJOR_HANDLER;
|
|
|
import static com.dayou.common.Constants.PERSONAL_HANDLER;
|
|
|
+import static com.dayou.enums.FinanceInvoiceState.审核拒绝;
|
|
|
+import static com.dayou.enums.GlobalConfigEnum.COMMISSION_MAJOR_EVALUATE_DEPARTMENT;
|
|
|
import static com.dayou.enums.GlobalConfigEnum.COMMISSION_MAJOR_MARKET_DEPARTMENT;
|
|
|
import static com.dayou.enums.workflow.NodeLogEnum.PASS;
|
|
|
import static com.dayou.enums.workflow.NodeStateEnum.*;
|
|
@@ -80,6 +75,12 @@ public class WorkNodeProcessable {
|
|
|
@Autowired
|
|
|
private IDepartmentService departmentService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private WorkFlowNodeInstanceMapper workFlowNodeInstanceMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ICommissionDeclareService commissionDeclareService;
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 提交流程前置处理
|
|
@@ -111,15 +112,21 @@ public class WorkNodeProcessable {
|
|
|
//寻找下一个节点,有可能下一个节点并非流程配置的节点,需根据业务数据变动
|
|
|
WorkNodeDTO nextWorkNode = workNodeService.getNextWorkNode(currentInstanceNode.getFlowId(), currentInstanceNode.getNodeId());
|
|
|
|
|
|
- if (nextWorkNode==null && !currentInstanceNode.getNodeCode().equals(WorkflowNodeEnum.BUSINESS_ARCHIVING.name())){
|
|
|
- ErrorCode.throwBusinessException(ErrorCode.NEXT_NODE_NOT_EXISTS);
|
|
|
- }
|
|
|
+// if (nextWorkNode==null && !currentInstanceNode.getNodeCode().equals(WorkflowNodeEnum.BUSINESS_ARCHIVING.name())){
|
|
|
+// ErrorCode.throwBusinessException(ErrorCode.NEXT_NODE_NOT_EXISTS);
|
|
|
+// }
|
|
|
|
|
|
return nextWorkNode;
|
|
|
}
|
|
|
|
|
|
|
|
|
public boolean forward(WorkNodeCommit workNodeCommit) {
|
|
|
+ WorkFlowNodeInstance currentInstanceNode = workFlowNodeInstanceMapper.getById(workNodeCommit.getInstanceNodeId());
|
|
|
+ WorkNodeDTO nextWorkNode = beforeForward(workNodeCommit,currentInstanceNode);
|
|
|
+ if (nextWorkNode!=null){
|
|
|
+ addNextInstanceNode(currentInstanceNode,nextWorkNode, workNodeCommit.getNextHandlerId(),workNodeCommit.getBusinessSubId(),workNodeCommit.getBusinessMinId());
|
|
|
+ return Boolean.TRUE;
|
|
|
+ }
|
|
|
return Boolean.FALSE;
|
|
|
}
|
|
|
|
|
@@ -191,7 +198,7 @@ public class WorkNodeProcessable {
|
|
|
@Transactional
|
|
|
public boolean ending(WorkNodeCommit commit){
|
|
|
WorkFlowNodeInstance currentNode = workFlowNodeInstanceService.getById(commit.getInstanceNodeId());
|
|
|
-
|
|
|
+ beforeEnding(currentNode);
|
|
|
//只需将当前节点设置为终止状态。
|
|
|
workFlowNodeInstanceService.update(new LambdaUpdateWrapper<WorkFlowNodeInstance>().set(WorkFlowNodeInstance::getState,CLOSED)
|
|
|
.set(WorkFlowNodeInstance::getComment,commit.getComments())
|
|
@@ -303,28 +310,44 @@ public class WorkNodeProcessable {
|
|
|
}
|
|
|
switch (MainBusinessEnum.valueOf(businessType)){
|
|
|
case COMMISSION_DECLARE_MAJOR_MARKET:
|
|
|
- List<GlobalConfig> list = globalConfigService.getConfigByKey( COMMISSION_MAJOR_MARKET_DEPARTMENT.name());
|
|
|
- if (CollectionUtil.isEmpty(list)){
|
|
|
- ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,"大中型市场部提成部门未配置。");
|
|
|
- }
|
|
|
- List<String> dIds = list.stream().filter(x->StrUtil.isNotBlank(x.getValue())).map(GlobalConfig::getValue).collect(Collectors.toList());
|
|
|
- if (CollectionUtil.isEmpty(dIds)){
|
|
|
- ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,"大中型市场部提成部门未配置。");
|
|
|
- }
|
|
|
- List<Long> xIds = dIds.stream().map(x -> { return Long.valueOf(x);}).collect(Collectors.toList());
|
|
|
- List<Long> targetIds = ownDepIds.stream().filter(xIds::contains).collect(Collectors.toList());
|
|
|
- if (targetIds.size()==0){
|
|
|
- ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,"抱歉,您不属于大中型市场部门人员。");
|
|
|
- }
|
|
|
- //多个默认第一个,保证流程顺畅
|
|
|
- Department department = departmentService.getById(targetIds.get(0));
|
|
|
- if (department.getLeaderId()==null){
|
|
|
- ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,department.getName() +" 部门领导未设置。");
|
|
|
- }
|
|
|
- return department.getLeaderId();
|
|
|
+ return findDepartmentLeader(ownDepIds,COMMISSION_MAJOR_MARKET_DEPARTMENT);
|
|
|
+ case COMMISSION_DECLARE_MAJOR_EVALUATE:
|
|
|
+ return findDepartmentLeader(ownDepIds,COMMISSION_MAJOR_EVALUATE_DEPARTMENT);
|
|
|
}
|
|
|
return 0L;
|
|
|
}
|
|
|
|
|
|
+ private Long findDepartmentLeader(List<Long> ownDepIds,GlobalConfigEnum configEnum){
|
|
|
+ List<GlobalConfig> list = globalConfigService.getConfigByKey( configEnum.name());
|
|
|
+ if (CollectionUtil.isEmpty(list)){
|
|
|
+ ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR, configEnum.getDesc()+"未配置。");
|
|
|
+ }
|
|
|
+ List<String> dIds = list.stream().filter(x->StrUtil.isNotBlank(x.getValue())).map(GlobalConfig::getValue).collect(Collectors.toList());
|
|
|
+ if (CollectionUtil.isEmpty(dIds)){
|
|
|
+ ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,configEnum.getDesc()+"未配置。");
|
|
|
+ }
|
|
|
+ List<Long> xIds = dIds.stream().map(x -> { return Long.valueOf(x);}).collect(Collectors.toList());
|
|
|
+ List<Long> targetIds = ownDepIds.stream().filter(xIds::contains).collect(Collectors.toList());
|
|
|
+ if (targetIds.size()==0){
|
|
|
+ ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,"抱歉,您不属于"+configEnum.getDesc()+"人员。");
|
|
|
+ }
|
|
|
+ //多个默认第一个,保证流程顺畅
|
|
|
+ Department department = departmentService.getById(targetIds.get(0));
|
|
|
+ if (department.getLeaderId()==null){
|
|
|
+ ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,department.getName() +" 部门领导未设置。");
|
|
|
+ }
|
|
|
+ return department.getLeaderId();
|
|
|
+ }
|
|
|
|
|
|
+ public void beforeEnding(WorkFlowNodeInstance currentInstanceNode){
|
|
|
+ //终止前节点控制前置处理。
|
|
|
+ MainBusinessEnum mainBusinessEnum = MainBusinessEnum.valueOf(currentInstanceNode.getBusinessType());
|
|
|
+ switch (mainBusinessEnum){
|
|
|
+ case COMMISSION_DECLARE_MAJOR_EVALUATE:
|
|
|
+ case COMMISSION_DECLARE_MAJOR_MARKET:
|
|
|
+ commissionDeclareService.update(new LambdaUpdateWrapper<CommissionDeclare>().set(CommissionDeclare::getDeclareResult,审核拒绝.name())
|
|
|
+ .eq(BaseEntity::getId,currentInstanceNode.getBusinessId()));
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|