|
@@ -183,8 +183,33 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- @Transactional
|
|
|
public Map<String, Object> taskApprove(FlowApproveParam flowApproveParam) throws InterruptedException {
|
|
|
+ ActivitiService activitiService = SpringContextHolder.getBean(ActivitiService.class);
|
|
|
+ Map<String, Object> map = activitiService.taskApproveCommon(flowApproveParam);
|
|
|
+
|
|
|
+ TFCustomFlow tfCustomFlow = (TFCustomFlow) map.get(SystemConstant.FLOW_CUSTOM);
|
|
|
+ Optional.ofNullable(tfCustomFlow).orElseThrow(() -> ExceptionResultEnum.FLOW_CUSTOM_NO_DATA.exception());
|
|
|
+
|
|
|
+ TFCustomFlowEntity tfCustomFlowEntity = (TFCustomFlowEntity) map.get(SystemConstant.FLOW_ENTITY);
|
|
|
+ Optional.ofNullable(tfCustomFlowEntity).orElseThrow(() -> ExceptionResultEnum.FLOW_ENTITY_NO_DATA.exception());
|
|
|
+
|
|
|
+ if (tfCustomFlow.getType() == TFCustomTypeEnum.OFFICE_SOP_FLOW || tfCustomFlow.getType() == TFCustomTypeEnum.CLOUD_MARK_SOP_FLOW) {
|
|
|
+ int count = tfFlowApproveService.findFlowPassageSopByCrmNo(tfCustomFlowEntity.getCrmNo());
|
|
|
+ if (count == 0) {
|
|
|
+ tbCrmService.updateCrmStatus(tfCustomFlowEntity.getCrmNo(), CrmStatusEnum.FINISH);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 审批任务
|
|
|
+ *
|
|
|
+ * @param flowApproveParam
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Transactional
|
|
|
+ public Map<String, Object> taskApproveCommon(FlowApproveParam flowApproveParam) throws InterruptedException {
|
|
|
SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
List<String> approveUserIds = flowApproveParam.getApproveUserIds();
|
|
@@ -273,13 +298,14 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
currFlowTaskResult.getSetup(), Long.parseLong(processFlowId),
|
|
|
Long.parseLong(task.getId()), tfCustomFlowEntity.getId(), StringUtils.join(approveUserIds, SystemConstant.LIST_JOIN_SPLIT));
|
|
|
if (flowApproveParam.getApprove() == FlowApprovePassEnum.PASS || flowApproveParam.getApprove() == FlowApprovePassEnum.DRAFT || flowApproveParam.getApprove() == FlowApprovePassEnum.START) {
|
|
|
+ boolean dingExceptionNoPass = false;
|
|
|
if (Objects.nonNull(flowApproveParam.getSetup())) {
|
|
|
currSetup = flowApproveParam.getSetup();
|
|
|
} else {
|
|
|
if (tfCustomFlow.getType() == TFCustomTypeEnum.DING_EXCEPTION_FLOW && currSetup == 2 && Objects.nonNull(flowApproveParam.getApproveRemark()) && Objects.equals(DingExceptionApproveEnum.NO_PASS.getTitle(), flowApproveParam.getApproveRemark())) {
|
|
|
currSetup = 0;
|
|
|
nrOfCompletedInstances = nrOfInstances;
|
|
|
- multiInstance = false;
|
|
|
+ dingExceptionNoPass = true;
|
|
|
} else {
|
|
|
currSetup = currSetup == setupMap.size() - 1 ? 0 : currSetup + 1;
|
|
|
}
|
|
@@ -303,6 +329,9 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
map,
|
|
|
flowApproveParam.getApprove(),
|
|
|
flowApproveParam.getApproveRemark());
|
|
|
+ if (dingExceptionNoPass) {
|
|
|
+ map.put(FlowApproveOperationEnum.REJECT.getId() + currFlowTaskResult.getSetup(), 1);
|
|
|
+ }
|
|
|
map.put(SystemConstant.ASSIGNEE + nextFlowTaskResult.getSetup(), approveUserIds);
|
|
|
map.put(SystemConstant.DEFAULT_ASSIGNEE_LIST + nextFlowTaskResult.getSetup(), approveUserIds);
|
|
|
} else if (flowApproveParam.getApprove() == FlowApprovePassEnum.REJECT || flowApproveParam.getApprove() == FlowApprovePassEnum.CANCEL) {
|
|
@@ -1050,21 +1079,23 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
String approveRemark) {
|
|
|
if (multiInstance) {
|
|
|
map.computeIfAbsent(FlowApproveOperationEnum.REJECT.getId() + currFlowTaskResult.getSetup(), v -> 0);
|
|
|
- } else {
|
|
|
- map.computeIfAbsent(FlowApproveOperationEnum.REJECT.getId() + currFlowTaskResult.getSetup(), v -> 1);
|
|
|
}
|
|
|
if (currFlowTaskResult.getSetup().intValue() == setupMap.size() - 1) {
|
|
|
- if (multiInstance && Objects.nonNull(nrOfCompletedInstances)
|
|
|
- && Objects.nonNull(nrOfInstances)
|
|
|
- && nrOfCompletedInstances.intValue() == nrOfInstances.intValue()) {
|
|
|
- tfFlowApprove.setStatus(FlowStatusEnum.FINISH);
|
|
|
- tfFlowApprove.setSetup(FlowApproveSetupEnum.FINISH.getSetup());
|
|
|
- } else if (!multiInstance) {
|
|
|
- tfFlowApprove.setStatus(FlowStatusEnum.FINISH);
|
|
|
- tfFlowApprove.setSetup(FlowApproveSetupEnum.FINISH.getSetup());
|
|
|
+ if (approvePass == FlowApprovePassEnum.DRAFT) {
|
|
|
+ tfFlowApprove.setStatus(FlowStatusEnum.valueOf(approvePass.name()));
|
|
|
} else {
|
|
|
- tfFlowApprove.setStatus(FlowStatusEnum.AUDITING);
|
|
|
- tfFlowApprove.setSetup(nextFlowTaskResult.getSetup());
|
|
|
+ if (multiInstance && Objects.nonNull(nrOfCompletedInstances)
|
|
|
+ && Objects.nonNull(nrOfInstances)
|
|
|
+ && nrOfCompletedInstances.intValue() == nrOfInstances.intValue()) {
|
|
|
+ tfFlowApprove.setStatus(FlowStatusEnum.FINISH);
|
|
|
+ tfFlowApprove.setSetup(FlowApproveSetupEnum.FINISH.getSetup());
|
|
|
+ } else if (!multiInstance) {
|
|
|
+ tfFlowApprove.setStatus(FlowStatusEnum.FINISH);
|
|
|
+ tfFlowApprove.setSetup(FlowApproveSetupEnum.FINISH.getSetup());
|
|
|
+ } else {
|
|
|
+ tfFlowApprove.setStatus(FlowStatusEnum.AUDITING);
|
|
|
+ tfFlowApprove.setSetup(nextFlowTaskResult.getSetup());
|
|
|
+ }
|
|
|
}
|
|
|
} else {
|
|
|
if (approvePass == FlowApprovePassEnum.DRAFT || approvePass == FlowApprovePassEnum.START) {
|