|
@@ -60,6 +60,7 @@ import java.util.zip.ZipInputStream;
|
|
|
*/
|
|
|
@Service
|
|
|
public class ActivitiServiceImpl implements ActivitiService {
|
|
|
+
|
|
|
private final static Logger log = LoggerFactory.getLogger(ActivitiServiceImpl.class);
|
|
|
|
|
|
@Resource
|
|
@@ -122,6 +123,9 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
@Resource
|
|
|
TSJobRemindService tsJobRemindService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ TBDeviceDeliveryService tbDeviceDeliveryService;
|
|
|
+
|
|
|
/**
|
|
|
* 根据deploymentId查找processDefinitionId
|
|
|
*
|
|
@@ -161,7 +165,8 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
public Map<String, Object> createDeployment(List<TFCustomTypeEnum> tfCustomTypeEnumList) throws Exception {
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
for (TFCustomTypeEnum tfCustomTypeEnum : tfCustomTypeEnumList) {
|
|
|
- List<TFCustomFlow> tfCustomFlowList = tfCustomFlowService.list(new QueryWrapper<TFCustomFlow>().lambda().eq(TFCustomFlow::getType, tfCustomTypeEnum));
|
|
|
+ List<TFCustomFlow> tfCustomFlowList = tfCustomFlowService.list(
|
|
|
+ new QueryWrapper<TFCustomFlow>().lambda().eq(TFCustomFlow::getType, tfCustomTypeEnum));
|
|
|
if (CollectionUtils.isEmpty(tfCustomFlowList)) {
|
|
|
DeploymentBuilder builder = repositoryService.createDeployment();
|
|
|
ClassPathResource resource = new ClassPathResource(tfCustomTypeEnum.getFileName());
|
|
@@ -170,7 +175,8 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
Map<String, Object> mapData = formPropertiesGet(builder.deploy().getId(), null, null, true, null);
|
|
|
map.put(tfCustomTypeEnum.name(), mapData);
|
|
|
} else {
|
|
|
- Map<String, Object> mapData = formPropertiesGet(tfCustomFlowList.get(0).getFlowDeploymentId(), null, null, true, null);
|
|
|
+ Map<String, Object> mapData = formPropertiesGet(tfCustomFlowList.get(0).getFlowDeploymentId(), null,
|
|
|
+ null, true, null);
|
|
|
map.put(tfCustomTypeEnum.name(), mapData);
|
|
|
}
|
|
|
}
|
|
@@ -194,7 +200,8 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
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) {
|
|
|
+ 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);
|
|
@@ -215,7 +222,9 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
List<String> approveUserIds = flowApproveParam.getApproveUserIds();
|
|
|
- if (CollectionUtils.isEmpty(approveUserIds) && (flowApproveParam.getApprove() == FlowApprovePassEnum.START || flowApproveParam.getApprove() == FlowApprovePassEnum.DRAFT || flowApproveParam.getApprove() == FlowApprovePassEnum.PASS)) {
|
|
|
+ if (CollectionUtils.isEmpty(approveUserIds) && (flowApproveParam.getApprove() == FlowApprovePassEnum.START
|
|
|
+ || flowApproveParam.getApprove() == FlowApprovePassEnum.DRAFT
|
|
|
+ || flowApproveParam.getApprove() == FlowApprovePassEnum.PASS)) {
|
|
|
approveUserIds = new ArrayList<>();
|
|
|
approveUserIds.add(String.valueOf(sysUser.getId()));//否则是当前登录用户
|
|
|
}
|
|
@@ -226,34 +235,44 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
FlowResult flowResult = null;
|
|
|
TFCustomFlow tfCustomFlow = null;
|
|
|
if (Objects.nonNull(flowApproveParam.getFlowDeploymentId()) && Objects.isNull(flowApproveParam.getTaskId())) {
|
|
|
- Optional.ofNullable(flowApproveParam.getCrmNo()).orElseThrow(() -> ExceptionResultEnum.CRM_NO_NO_DATA.exception());
|
|
|
+ Optional.ofNullable(flowApproveParam.getCrmNo())
|
|
|
+ .orElseThrow(() -> ExceptionResultEnum.CRM_NO_NO_DATA.exception());
|
|
|
|
|
|
- tfCustomFlow = tfCustomFlowService.getOne(new QueryWrapper<TFCustomFlow>().lambda().eq(TFCustomFlow::getFlowDeploymentId, flowApproveParam.getFlowDeploymentId()));
|
|
|
+ tfCustomFlow = tfCustomFlowService.getOne(new QueryWrapper<TFCustomFlow>().lambda()
|
|
|
+ .eq(TFCustomFlow::getFlowDeploymentId, flowApproveParam.getFlowDeploymentId()));
|
|
|
Optional.ofNullable(tfCustomFlow).orElseThrow(() -> ExceptionResultEnum.FLOW_CUSTOM_NO_DATA.exception());
|
|
|
- Optional.ofNullable(tfCustomFlow.getFlowProcessVar()).orElseThrow(() -> ExceptionResultEnum.FLOW_PROCESS_VAR_NO_DATA.exception());
|
|
|
+ Optional.ofNullable(tfCustomFlow.getFlowProcessVar())
|
|
|
+ .orElseThrow(() -> ExceptionResultEnum.FLOW_PROCESS_VAR_NO_DATA.exception());
|
|
|
|
|
|
TFCustomFlow maxTfCustomFlow = tfCustomFlowService.findMaxVersion(null, null, tfCustomFlow.getType());
|
|
|
if (maxTfCustomFlow.getVersion().intValue() != tfCustomFlow.getVersion().intValue()) {//说明版本发生变化
|
|
|
BeanUtils.copyProperties(maxTfCustomFlow, tfCustomFlow);
|
|
|
}
|
|
|
Optional.ofNullable(maxTfCustomFlow).orElseThrow(() -> ExceptionResultEnum.FLOW_CUSTOM_NO_DATA.exception());
|
|
|
- Optional.ofNullable(maxTfCustomFlow.getFlowProcessVar()).orElseThrow(() -> ExceptionResultEnum.FLOW_PROCESS_VAR_NO_DATA.exception());
|
|
|
+ Optional.ofNullable(maxTfCustomFlow.getFlowProcessVar())
|
|
|
+ .orElseThrow(() -> ExceptionResultEnum.FLOW_PROCESS_VAR_NO_DATA.exception());
|
|
|
|
|
|
map.put(SystemConstant.DEFAULT_ASSIGNEE_LIST + 1, approveUserIds);
|
|
|
- ProcessInstance processInstance = runtimeService.startProcessInstanceById(tfCustomFlow.getFlowDefinitionId(), map);
|
|
|
+ ProcessInstance processInstance = runtimeService.startProcessInstanceById(
|
|
|
+ tfCustomFlow.getFlowDefinitionId(), map);
|
|
|
processFlowId = processInstance.getId();
|
|
|
|
|
|
String code = sequenceService.createFlowCode(tfCustomFlow.getType());
|
|
|
- tfCustomFlowEntity = new TFCustomFlowEntity(tfCustomFlow.getId(), sysUser.getId(), code, flowApproveParam.getCrmNo());
|
|
|
- tfFlowApprove = new TFFlowApprove(sysUser.getOrgId(), Long.parseLong(approveUserIds.get(approveUserIds.size() - 1)), FlowStatusEnum.valueOf(flowApproveParam.getApprove().name()), sysUser.getId());
|
|
|
+ tfCustomFlowEntity = new TFCustomFlowEntity(tfCustomFlow.getId(), sysUser.getId(), code,
|
|
|
+ flowApproveParam.getCrmNo());
|
|
|
+ tfFlowApprove = new TFFlowApprove(sysUser.getOrgId(),
|
|
|
+ Long.parseLong(approveUserIds.get(approveUserIds.size() - 1)),
|
|
|
+ FlowStatusEnum.valueOf(flowApproveParam.getApprove().name()), sysUser.getId());
|
|
|
flowResult = JSONObject.parseObject(tfCustomFlow.getFlowProcessVar(), FlowResult.class);
|
|
|
} else if (Objects.nonNull(flowApproveParam.getTaskId())) {
|
|
|
- taskTemp = taskService.createTaskQuery().taskId(String.valueOf(flowApproveParam.getTaskId())).singleResult();
|
|
|
+ taskTemp = taskService.createTaskQuery().taskId(String.valueOf(flowApproveParam.getTaskId()))
|
|
|
+ .singleResult();
|
|
|
Optional.ofNullable(taskTemp).orElseThrow(() -> ExceptionResultEnum.FLOW_TASK_NO_DATA.exception());
|
|
|
processFlowId = taskTemp.getProcessInstanceId();
|
|
|
}
|
|
|
|
|
|
- boolean lock = memoryLock.lock(SystemConstant.LOCK_FLOW_TASK_PREFIX + processFlowId, processFlowId, SystemConstant.LOCK_FLOW_TIME_OUT);
|
|
|
+ boolean lock = memoryLock.lock(SystemConstant.LOCK_FLOW_TASK_PREFIX + processFlowId, processFlowId,
|
|
|
+ SystemConstant.LOCK_FLOW_TIME_OUT);
|
|
|
if (!lock) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("正在审批中,请稍候再试!");
|
|
|
}
|
|
@@ -262,14 +281,18 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
if (Objects.isNull(taskTemp)) {
|
|
|
taskList = taskService.createTaskQuery().processInstanceId(processFlowId).list();
|
|
|
} else {
|
|
|
- tfCustomFlowEntity = tfCustomFlowEntityService.getOne(new QueryWrapper<TFCustomFlowEntity>().lambda().eq(TFCustomFlowEntity::getFlowId, Long.parseLong(processFlowId)));
|
|
|
- Optional.ofNullable(tfCustomFlowEntity).orElseThrow(() -> ExceptionResultEnum.FLOW_ENTITY_NO_DATA.exception());
|
|
|
+ tfCustomFlowEntity = tfCustomFlowEntityService.getOne(new QueryWrapper<TFCustomFlowEntity>().lambda()
|
|
|
+ .eq(TFCustomFlowEntity::getFlowId, Long.parseLong(processFlowId)));
|
|
|
+ Optional.ofNullable(tfCustomFlowEntity)
|
|
|
+ .orElseThrow(() -> ExceptionResultEnum.FLOW_ENTITY_NO_DATA.exception());
|
|
|
flowResult = JSONObject.parseObject(tfCustomFlowEntity.getFlowProcessVar(), FlowResult.class);
|
|
|
|
|
|
tfCustomFlow = tfCustomFlowService.getById(tfCustomFlowEntity.gettFCustomFlowId());
|
|
|
|
|
|
- tfFlowApprove = tfFlowApproveService.getOne(new QueryWrapper<TFFlowApprove>().lambda().eq(TFFlowApprove::getFlowId, Long.parseLong(processFlowId)));
|
|
|
- Optional.ofNullable(tfFlowApprove).orElseThrow(() -> ExceptionResultEnum.FLOW_APPROVE_NO_DATA.exception());
|
|
|
+ tfFlowApprove = tfFlowApproveService.getOne(new QueryWrapper<TFFlowApprove>().lambda()
|
|
|
+ .eq(TFFlowApprove::getFlowId, Long.parseLong(processFlowId)));
|
|
|
+ Optional.ofNullable(tfFlowApprove)
|
|
|
+ .orElseThrow(() -> ExceptionResultEnum.FLOW_APPROVE_NO_DATA.exception());
|
|
|
taskList.add(taskTemp);
|
|
|
}
|
|
|
List<TFFlowLog> tfFlowLogList = new ArrayList<>();
|
|
@@ -286,14 +309,17 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
boolean multiInstance = false;
|
|
|
if (currFlow instanceof UserTask) {
|
|
|
if (currFlow.getBehavior() instanceof MultiInstanceActivityBehavior) {
|
|
|
- nrOfCompletedInstances = (Integer) taskService.getVariable(task.getId(), SystemConstant.NR_OF_COMPLETED_INSTANCES);
|
|
|
+ nrOfCompletedInstances = (Integer) taskService.getVariable(task.getId(),
|
|
|
+ SystemConstant.NR_OF_COMPLETED_INSTANCES);
|
|
|
nrOfCompletedInstances++;
|
|
|
nrOfInstances = (Integer) taskService.getVariable(task.getId(), SystemConstant.NR_OF_INSTANCES);
|
|
|
multiInstance = true;
|
|
|
}
|
|
|
- currFlowTaskResult = GsonUtil.fromJson(GsonUtil.toJson(setupMap.get(task.getTaskDefinitionKey())), FlowTaskResult.class);
|
|
|
+ currFlowTaskResult = GsonUtil.fromJson(GsonUtil.toJson(setupMap.get(task.getTaskDefinitionKey())),
|
|
|
+ FlowTaskResult.class);
|
|
|
if (Objects.nonNull(flowApproveParam.getFormProperties())) {
|
|
|
- formDataFlowTaskResult = JSONObject.parseObject(flowApproveParam.getFormProperties(), FlowTaskResult.class);
|
|
|
+ formDataFlowTaskResult = JSONObject.parseObject(flowApproveParam.getFormProperties(),
|
|
|
+ FlowTaskResult.class);
|
|
|
}
|
|
|
int currSetup = currFlowTaskResult.getSetup().intValue();
|
|
|
if (currSetup != 1 && flowApproveParam.getApprove() == FlowApprovePassEnum.START) {
|
|
@@ -304,14 +330,19 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
}
|
|
|
//流程流水日志
|
|
|
TFFlowLog tfFlowLog = new TFFlowLog(sysUser.getOrgId(), sysUser.getId(), sysUser.getId(),
|
|
|
- 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) {
|
|
|
+ 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())) {
|
|
|
+ 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;
|
|
|
dingExceptionNoPass = true;
|
|
@@ -319,77 +350,65 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
currSetup = currSetup == setupMap.size() - 1 ? 0 : currSetup + 1;
|
|
|
}
|
|
|
}
|
|
|
- nextFlowTaskResult = this.getNextFlowTaskResult(nrOfCompletedInstances,
|
|
|
- nrOfInstances,
|
|
|
- currFlowTaskResult,
|
|
|
- nextFlowTaskResult,
|
|
|
- currSetup,
|
|
|
- setupMap,
|
|
|
+ nextFlowTaskResult = this.getNextFlowTaskResult(nrOfCompletedInstances, nrOfInstances,
|
|
|
+ currFlowTaskResult, nextFlowTaskResult, currSetup, setupMap,
|
|
|
flowApproveParam.getApprove());
|
|
|
|
|
|
- this.approvePass(currFlowTaskResult,
|
|
|
- setupMap,
|
|
|
- multiInstance,
|
|
|
- nrOfCompletedInstances,
|
|
|
- nrOfInstances,
|
|
|
- tfFlowApprove,
|
|
|
- tfFlowLog,
|
|
|
- nextFlowTaskResult,
|
|
|
- map,
|
|
|
- flowApproveParam.getApprove(),
|
|
|
- flowApproveParam.getApproveRemark());
|
|
|
+ this.approvePass(currFlowTaskResult, setupMap, multiInstance, nrOfCompletedInstances,
|
|
|
+ nrOfInstances, tfFlowApprove, tfFlowLog, nextFlowTaskResult, 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) {
|
|
|
+ } else if (flowApproveParam.getApprove() == FlowApprovePassEnum.REJECT
|
|
|
+ || flowApproveParam.getApprove() == FlowApprovePassEnum.CANCEL) {
|
|
|
if (Objects.nonNull(flowApproveParam.getSetup())) {
|
|
|
currSetup = flowApproveParam.getSetup();
|
|
|
} else {
|
|
|
currSetup = currSetup - 1;
|
|
|
}
|
|
|
|
|
|
- nextFlowTaskResult = this.getNextFlowTaskResult(nrOfCompletedInstances,
|
|
|
- nrOfInstances,
|
|
|
- currFlowTaskResult,
|
|
|
- nextFlowTaskResult,
|
|
|
- currSetup,
|
|
|
- setupMap,
|
|
|
+ nextFlowTaskResult = this.getNextFlowTaskResult(nrOfCompletedInstances, nrOfInstances,
|
|
|
+ currFlowTaskResult, nextFlowTaskResult, currSetup, setupMap,
|
|
|
flowApproveParam.getApprove());
|
|
|
|
|
|
- this.approveReject(multiInstance,
|
|
|
- map,
|
|
|
- currFlowTaskResult,
|
|
|
- nextFlowTaskResult,
|
|
|
- tfFlowApprove,
|
|
|
- tfFlowLog,
|
|
|
- flowApproveParam.getApprove(),
|
|
|
- flowApproveParam.getApproveRemark());
|
|
|
+ this.approveReject(multiInstance, map, currFlowTaskResult, nextFlowTaskResult, tfFlowApprove,
|
|
|
+ tfFlowLog, flowApproveParam.getApprove(), flowApproveParam.getApproveRemark());
|
|
|
}
|
|
|
map.put(SystemConstant.APPROVE, nextFlowTaskResult.getTaskKey());
|
|
|
- if (Objects.nonNull(formDataFlowTaskResult) && Objects.equals(task.getTaskDefinitionKey(), formDataFlowTaskResult.getTaskKey())) {
|
|
|
+ if (Objects.nonNull(formDataFlowTaskResult) && Objects.equals(task.getTaskDefinitionKey(),
|
|
|
+ formDataFlowTaskResult.getTaskKey())) {
|
|
|
setupMap.put(task.getTaskDefinitionKey(), formDataFlowTaskResult);
|
|
|
- if (tfCustomFlow.getType() == TFCustomTypeEnum.OFFICE_SOP_FLOW || tfCustomFlow.getType() == TFCustomTypeEnum.CLOUD_MARK_SOP_FLOW) {
|
|
|
- tbSopInfoService.saveDynamicSop(tfCustomFlow, tfCustomFlowEntity.getCode(), Long.parseLong(processFlowId), formDataFlowTaskResult);
|
|
|
+ if (tfCustomFlow.getType() == TFCustomTypeEnum.OFFICE_SOP_FLOW
|
|
|
+ || tfCustomFlow.getType() == TFCustomTypeEnum.CLOUD_MARK_SOP_FLOW) {
|
|
|
+ tbSopInfoService.saveDynamicSop(tfCustomFlow, tfCustomFlowEntity.getCode(),
|
|
|
+ Long.parseLong(processFlowId), formDataFlowTaskResult);
|
|
|
}
|
|
|
}
|
|
|
flowResult.setSetupMap(setupMap);
|
|
|
tfCustomFlowEntity.setFlowProcessVar(JacksonUtil.parseJson(flowResult));
|
|
|
- if (flowApproveParam.getApprove() == FlowApprovePassEnum.START || flowApproveParam.getApprove() == FlowApprovePassEnum.PASS
|
|
|
- || flowApproveParam.getApprove() == FlowApprovePassEnum.CANCEL || flowApproveParam.getApprove() == FlowApprovePassEnum.REJECT) {
|
|
|
- if (flowApproveParam.getApprove() == FlowApprovePassEnum.CANCEL || flowApproveParam.getApprove() == FlowApprovePassEnum.REJECT) {
|
|
|
+ if (flowApproveParam.getApprove() == FlowApprovePassEnum.START
|
|
|
+ || flowApproveParam.getApprove() == FlowApprovePassEnum.PASS
|
|
|
+ || flowApproveParam.getApprove() == FlowApprovePassEnum.CANCEL
|
|
|
+ || flowApproveParam.getApprove() == FlowApprovePassEnum.REJECT) {
|
|
|
+ if (flowApproveParam.getApprove() == FlowApprovePassEnum.CANCEL
|
|
|
+ || flowApproveParam.getApprove() == FlowApprovePassEnum.REJECT) {
|
|
|
List<HistoricTaskInstance> historicTaskInstanceList = historyService.createHistoricTaskInstanceQuery()
|
|
|
- .processInstanceId(task.getProcessInstanceId()).orderByHistoricTaskInstanceEndTime().desc().list();
|
|
|
+ .processInstanceId(task.getProcessInstanceId()).orderByHistoricTaskInstanceEndTime()
|
|
|
+ .desc().list();
|
|
|
if (!CollectionUtils.isEmpty(historicTaskInstanceList)) {
|
|
|
Set<String> approveIdSet = new LinkedHashSet<>();
|
|
|
for (int i = historicTaskInstanceList.size() - 1; i >= 0; i--) {
|
|
|
HistoricTaskInstance historicTaskInstance = historicTaskInstanceList.get(i);
|
|
|
- if (Objects.equals(historicTaskInstance.getTaskDefinitionKey(), nextFlowTaskResult.getTaskKey())) {
|
|
|
+ if (Objects.equals(historicTaskInstance.getTaskDefinitionKey(),
|
|
|
+ nextFlowTaskResult.getTaskKey())) {
|
|
|
if (Objects.nonNull(historicTaskInstance.getAssignee())) {
|
|
|
approveIdSet.add(historicTaskInstance.getAssignee());
|
|
|
} else {
|
|
|
- List<HistoricIdentityLink> historicIdentityLinkList = historyService.getHistoricIdentityLinksForTask(historicTaskInstance.getId());
|
|
|
+ List<HistoricIdentityLink> historicIdentityLinkList = historyService.getHistoricIdentityLinksForTask(
|
|
|
+ historicTaskInstance.getId());
|
|
|
if (!CollectionUtils.isEmpty(historicIdentityLinkList)) {
|
|
|
for (HistoricIdentityLink h : historicIdentityLinkList) {
|
|
|
approveIdSet.add(h.getUserId());
|
|
@@ -398,9 +417,13 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- tfFlowLog.setPendApproveId(approveIdSet.toString().replaceAll("\\[", "").replaceAll("\\]", "").replaceAll(", ", ","));
|
|
|
- map.put(SystemConstant.ASSIGNEE + nextFlowTaskResult.getSetup(), new ArrayList<>(approveIdSet));
|
|
|
- map.put(SystemConstant.DEFAULT_ASSIGNEE_LIST + nextFlowTaskResult.getSetup(), new ArrayList<>(approveIdSet));
|
|
|
+ tfFlowLog.setPendApproveId(
|
|
|
+ approveIdSet.toString().replaceAll("\\[", "").replaceAll("\\]", "")
|
|
|
+ .replaceAll(", ", ","));
|
|
|
+ map.put(SystemConstant.ASSIGNEE + nextFlowTaskResult.getSetup(),
|
|
|
+ new ArrayList<>(approveIdSet));
|
|
|
+ map.put(SystemConstant.DEFAULT_ASSIGNEE_LIST + nextFlowTaskResult.getSetup(),
|
|
|
+ new ArrayList<>(approveIdSet));
|
|
|
}
|
|
|
}
|
|
|
taskService.setVariable(task.getId(), SystemConstant.FLOW_CUSTOM, tfCustomFlow);
|
|
@@ -408,15 +431,17 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
taskService.setVariable(task.getId(), SystemConstant.FLOW_ENTITY, tfCustomFlowEntity);
|
|
|
taskService.setVariable(task.getId(), SystemConstant.FLOW_APPROVE_LOG, tfFlowLog);
|
|
|
taskService.setVariable(task.getId(), SystemConstant.FLOW_SYS_USER, sysUser);
|
|
|
-// taskService.setVariable(task.getId(), SystemConstant.APPROVE_MAP_VAR, flowApproveParam.getVar());
|
|
|
+ // taskService.setVariable(task.getId(), SystemConstant.APPROVE_MAP_VAR, flowApproveParam.getVar());
|
|
|
taskService.complete(task.getId(), map);
|
|
|
- if (flowApproveParam.getApprove() == FlowApprovePassEnum.START || flowApproveParam.getApprove() == FlowApprovePassEnum.PASS) {
|
|
|
+ if (flowApproveParam.getApprove() == FlowApprovePassEnum.START
|
|
|
+ || flowApproveParam.getApprove() == FlowApprovePassEnum.PASS) {
|
|
|
List<Task> tasks = taskService.createTaskQuery().processInstanceId(processFlowId).list();
|
|
|
if (!CollectionUtils.isEmpty(tasks)) {
|
|
|
Set<String> approveIdSet = new LinkedHashSet<>();
|
|
|
for (Task t : tasks) {
|
|
|
if (Objects.isNull(t.getAssignee())) {
|
|
|
- List<IdentityLink> identityLinkList = taskService.getIdentityLinksForTask(t.getId());
|
|
|
+ List<IdentityLink> identityLinkList = taskService.getIdentityLinksForTask(
|
|
|
+ t.getId());
|
|
|
if (!CollectionUtils.isEmpty(identityLinkList)) {
|
|
|
for (IdentityLink i : identityLinkList) {
|
|
|
approveIdSet.add(i.getUserId());
|
|
@@ -426,7 +451,9 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
approveIdSet.add(t.getAssignee());
|
|
|
}
|
|
|
}
|
|
|
- tfFlowLog.setPendApproveId(approveIdSet.toString().replaceAll("\\[", "").replaceAll("\\]", "").replaceAll(", ", ","));
|
|
|
+ tfFlowLog.setPendApproveId(
|
|
|
+ approveIdSet.toString().replaceAll("\\[", "").replaceAll("\\]", "")
|
|
|
+ .replaceAll(", ", ","));
|
|
|
} else {
|
|
|
tfFlowLog.setPendApproveId(null);
|
|
|
}
|
|
@@ -442,7 +469,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
map.put(SystemConstant.FLOW_CUSTOM, tfCustomFlow);
|
|
|
map.put(SystemConstant.FLOW_APPROVE, tfFlowApprove);
|
|
|
map.put(SystemConstant.FLOW_ENTITY, tfCustomFlowEntity);
|
|
|
-// map.put(SystemConstant.APPROVE_MAP_VAR, flowApproveParam.getVar());
|
|
|
+ // map.put(SystemConstant.APPROVE_MAP_VAR, flowApproveParam.getVar());
|
|
|
} catch (Exception e) {
|
|
|
log.error(SystemConstant.LOG_ERROR, e);
|
|
|
if (e instanceof ApiException) {
|
|
@@ -468,54 +495,68 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional
|
|
|
- public Map<String, Object> formPropertiesGet(String flowDeploymentId,
|
|
|
- Long flowId,
|
|
|
- Long taskId,
|
|
|
- Boolean dynamicTable,
|
|
|
- String crmNo) throws Exception {
|
|
|
+ public Map<String, Object> formPropertiesGet(String flowDeploymentId, Long flowId, Long taskId,
|
|
|
+ Boolean dynamicTable, String crmNo) throws Exception {
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
FlowResult flowResult = null;
|
|
|
TFCustomFlow tfCustomFlow = null;
|
|
|
List<Task> taskList = null;
|
|
|
if (Objects.nonNull(flowDeploymentId)) {
|
|
|
- tfCustomFlow = tfCustomFlowService.getOne(new QueryWrapper<TFCustomFlow>().lambda().eq(TFCustomFlow::getFlowDeploymentId, flowDeploymentId));
|
|
|
- Optional.ofNullable(tfCustomFlow).orElseThrow(() -> ExceptionResultEnum.FLOW_DEPLOYMENT_NO_DATA.exception());
|
|
|
+ tfCustomFlow = tfCustomFlowService.getOne(
|
|
|
+ new QueryWrapper<TFCustomFlow>().lambda().eq(TFCustomFlow::getFlowDeploymentId, flowDeploymentId));
|
|
|
+ Optional.ofNullable(tfCustomFlow)
|
|
|
+ .orElseThrow(() -> ExceptionResultEnum.FLOW_DEPLOYMENT_NO_DATA.exception());
|
|
|
if (Objects.isNull(tfCustomFlow.getFlowDefinitionId())) {
|
|
|
String processDefinitionId = this.findProcessDefinitionIdByDeploymentId(flowDeploymentId);
|
|
|
tfCustomFlow.setFlowDefinitionId(processDefinitionId);
|
|
|
tfCustomFlowService.updateById(tfCustomFlow);
|
|
|
}
|
|
|
flowResult = JSONObject.parseObject(tfCustomFlow.getFlowProcessVar(), FlowResult.class);
|
|
|
- if (tfCustomFlow.getType() == TFCustomTypeEnum.OFFICE_SOP_FLOW || tfCustomFlow.getType() == TFCustomTypeEnum.CLOUD_MARK_SOP_FLOW || tfCustomFlow.getType() == TFCustomTypeEnum.QUALITY_PROBLEM_FLOW) {
|
|
|
+ if (tfCustomFlow.getType() == TFCustomTypeEnum.OFFICE_SOP_FLOW
|
|
|
+ || tfCustomFlow.getType() == TFCustomTypeEnum.CLOUD_MARK_SOP_FLOW
|
|
|
+ || tfCustomFlow.getType() == TFCustomTypeEnum.QUALITY_PROBLEM_FLOW) {
|
|
|
map = this.getFlowFormPropertie(flowResult, map, 1);
|
|
|
- if ((Objects.nonNull(dynamicTable) && dynamicTable) && (tfCustomFlow.getType() == TFCustomTypeEnum.OFFICE_SOP_FLOW || tfCustomFlow.getType() == TFCustomTypeEnum.CLOUD_MARK_SOP_FLOW)) {
|
|
|
+ if ((Objects.nonNull(dynamicTable) && dynamicTable) && (
|
|
|
+ tfCustomFlow.getType() == TFCustomTypeEnum.OFFICE_SOP_FLOW
|
|
|
+ || tfCustomFlow.getType() == TFCustomTypeEnum.CLOUD_MARK_SOP_FLOW)) {
|
|
|
Map<String, FlowTaskResult> setupMap = flowResult.getSetupMap();
|
|
|
Set<TDFormWidgetMetadata> tdFormWidgetMetadataSet = new LinkedHashSet<>();
|
|
|
for (Map.Entry<String, FlowTaskResult> entry : setupMap.entrySet()) {
|
|
|
- FlowTaskResult flowTaskResultTemp = GsonUtil.fromJson(GsonUtil.toJson(entry.getValue()), FlowTaskResult.class);
|
|
|
+ FlowTaskResult flowTaskResultTemp = GsonUtil.fromJson(GsonUtil.toJson(entry.getValue()),
|
|
|
+ FlowTaskResult.class);
|
|
|
List<FlowFormWidgetResult> formWidgetResultList = flowTaskResultTemp.getFormProperty();
|
|
|
if (!CollectionUtils.isEmpty(formWidgetResultList)) {
|
|
|
for (FlowFormWidgetResult f : formWidgetResultList) {
|
|
|
- if (f.getCode() != WidgetCodeEnum.FORM_GROUP_TITLE && f.getCode() != WidgetCodeEnum.ONLY_TITLE
|
|
|
+ if (f.getCode() != WidgetCodeEnum.FORM_GROUP_TITLE
|
|
|
+ && f.getCode() != WidgetCodeEnum.ONLY_TITLE
|
|
|
&& f.getCode() != WidgetCodeEnum.BUTTON && f.getCode() != WidgetCodeEnum.IMG
|
|
|
&& f.getCode() != WidgetCodeEnum.LABEL && f.getCode() != WidgetCodeEnum.SIGN
|
|
|
&& f.getCode() != WidgetCodeEnum.OTHER) {
|
|
|
- tdFormWidgetMetadataSet.add(new TDFormWidgetMetadata(tfCustomFlow.getType(), tfCustomFlow.getFlowDeploymentId(), tfCustomFlow.getVersion(), flowTaskResultTemp.getSetup(), f.getCode(), f.getFormId(), f.getFormName(), f.getTitle()));
|
|
|
+ tdFormWidgetMetadataSet.add(new TDFormWidgetMetadata(tfCustomFlow.getType(),
|
|
|
+ tfCustomFlow.getFlowDeploymentId(), tfCustomFlow.getVersion(),
|
|
|
+ flowTaskResultTemp.getSetup(), f.getCode(), f.getFormId(), f.getFormName(),
|
|
|
+ f.getTitle()));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- tdFormWidgetMetadataService.selectMetadataExist(tfCustomFlow.getType(), tfCustomFlow.getVersion(), tdFormWidgetMetadataSet);
|
|
|
- mySQLExec.execCreateSopDynamicTable(SystemConstant.SOP_DYNAMIC_TABLE_FILE_NAME, tfCustomFlow.getType(), tfCustomFlow.getVersion());
|
|
|
+ tdFormWidgetMetadataService.selectMetadataExist(tfCustomFlow.getType(), tfCustomFlow.getVersion(),
|
|
|
+ tdFormWidgetMetadataSet);
|
|
|
+ mySQLExec.execCreateSopDynamicTable(SystemConstant.SOP_DYNAMIC_TABLE_FILE_NAME,
|
|
|
+ tfCustomFlow.getType(), tfCustomFlow.getVersion());
|
|
|
}
|
|
|
}
|
|
|
} else if (Objects.nonNull(flowId)) {
|
|
|
- if (tfCustomFlow.getType() == TFCustomTypeEnum.OFFICE_SOP_FLOW || tfCustomFlow.getType() == TFCustomTypeEnum.CLOUD_MARK_SOP_FLOW || tfCustomFlow.getType() == TFCustomTypeEnum.QUALITY_PROBLEM_FLOW) {
|
|
|
+ if (tfCustomFlow.getType() == TFCustomTypeEnum.OFFICE_SOP_FLOW
|
|
|
+ || tfCustomFlow.getType() == TFCustomTypeEnum.CLOUD_MARK_SOP_FLOW
|
|
|
+ || tfCustomFlow.getType() == TFCustomTypeEnum.QUALITY_PROBLEM_FLOW) {
|
|
|
taskList = taskService.createTaskQuery().processInstanceId(String.valueOf(flowId)).list();
|
|
|
map = this.getFlowFormPropertie(map, taskList, flowResult, tfCustomFlow);
|
|
|
}
|
|
|
} else {
|
|
|
- if (tfCustomFlow.getType() == TFCustomTypeEnum.OFFICE_SOP_FLOW || tfCustomFlow.getType() == TFCustomTypeEnum.CLOUD_MARK_SOP_FLOW || tfCustomFlow.getType() == TFCustomTypeEnum.QUALITY_PROBLEM_FLOW) {
|
|
|
+ if (tfCustomFlow.getType() == TFCustomTypeEnum.OFFICE_SOP_FLOW
|
|
|
+ || tfCustomFlow.getType() == TFCustomTypeEnum.CLOUD_MARK_SOP_FLOW
|
|
|
+ || tfCustomFlow.getType() == TFCustomTypeEnum.QUALITY_PROBLEM_FLOW) {
|
|
|
taskList = taskService.createTaskQuery().taskId(String.valueOf(taskId)).list();
|
|
|
map = this.getFlowFormPropertie(map, taskList, flowResult, tfCustomFlow);
|
|
|
}
|
|
@@ -544,11 +585,13 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public IPage<WorkTaskResult> getFlowTaskList(IPage<Map> iPage, Long userId, TFCustomTypeEnum type, Long serviceId, String customName, FlowTaskTypeEnum flowTaskTypeEnum, String crmNo) {
|
|
|
+ public IPage<WorkTaskResult> getFlowTaskList(IPage<Map> iPage, Long userId, TFCustomTypeEnum type, Long serviceId,
|
|
|
+ String customName, FlowTaskTypeEnum flowTaskTypeEnum, String crmNo) {
|
|
|
SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
userId = Objects.nonNull(sysUser) ? sysUser.getId() : userId;
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
- IPage<WorkTaskResult> workTaskResultIPage = sysUserService.getFlowTaskList(iPage, userId, type, serviceId, customName, flowTaskTypeEnum, crmNo);
|
|
|
+ IPage<WorkTaskResult> workTaskResultIPage = sysUserService.getFlowTaskList(iPage, userId, type, serviceId,
|
|
|
+ customName, flowTaskTypeEnum, crmNo);
|
|
|
if (Objects.nonNull(workTaskResultIPage) && !CollectionUtils.isEmpty(workTaskResultIPage.getRecords())) {
|
|
|
Set<String> sopNoSet = new HashSet<>(workTaskResultIPage.getRecords().size());
|
|
|
Map<String, WorkTaskResult> workTaskMap = new LinkedHashMap<>();
|
|
@@ -560,14 +603,16 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
for (Task t : taskList) {
|
|
|
FlowResult flowResult = JSONObject.parseObject(w.getFlowProcessVar(), FlowResult.class);
|
|
|
LinkedHashMap<String, FlowTaskResult> setupMap = flowResult.getSetupMap();
|
|
|
- FlowTaskResult currFlowTaskResult = GsonUtil.fromJson(GsonUtil.toJson(setupMap.get(t.getTaskDefinitionKey())), FlowTaskResult.class);
|
|
|
+ FlowTaskResult currFlowTaskResult = GsonUtil.fromJson(
|
|
|
+ GsonUtil.toJson(setupMap.get(t.getTaskDefinitionKey())), FlowTaskResult.class);
|
|
|
map = this.getFlowFormPropertie(flowResult, map, currFlowTaskResult.getSetup());
|
|
|
w.setFlowProcessVar(null);
|
|
|
w.setSetupMap((FlowTaskResult) map.get(SystemConstant.FORM_PROPERTIES));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- List<WorkTaskResult> workTaskResultList = tsJobRemindService.getJobRemindProcessHour(sysUser.getId(), sopNoSet);
|
|
|
+ List<WorkTaskResult> workTaskResultList = tsJobRemindService.getJobRemindProcessHour(sysUser.getId(),
|
|
|
+ sopNoSet);
|
|
|
if (!CollectionUtils.isEmpty(workTaskResultList)) {
|
|
|
for (WorkTaskResult w : workTaskResultList) {
|
|
|
if (Objects.nonNull(workTaskMap.get(w.getCode())) && Objects.nonNull(w.getProcessHour())) {
|
|
@@ -591,7 +636,8 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public int getFlowTaskListCount(Long userId, TFCustomTypeEnum type, Long serviceId, String customName, FlowTaskTypeEnum flowTaskTypeEnum, String crmNo) {
|
|
|
+ public int getFlowTaskListCount(Long userId, TFCustomTypeEnum type, Long serviceId, String customName,
|
|
|
+ FlowTaskTypeEnum flowTaskTypeEnum, String crmNo) {
|
|
|
SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
userId = Objects.nonNull(sysUser) ? sysUser.getId() : userId;
|
|
|
return sysUserService.getFlowTaskListCount(userId, type, serviceId, customName, flowTaskTypeEnum, crmNo);
|
|
@@ -612,7 +658,8 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
throw ExceptionResultEnum.ERROR.exception("不能转给自己!");
|
|
|
}
|
|
|
|
|
|
- boolean lock = memoryLock.lock(SystemConstant.LOCK_FLOW_EXCHANGE_PREFIX + taskId, taskId, SystemConstant.LOCK_FLOW_TIME_OUT);
|
|
|
+ boolean lock = memoryLock.lock(SystemConstant.LOCK_FLOW_EXCHANGE_PREFIX + taskId, taskId,
|
|
|
+ SystemConstant.LOCK_FLOW_TIME_OUT);
|
|
|
if (!lock) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("正在转审中,请稍候再试!");
|
|
|
}
|
|
@@ -626,7 +673,8 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
if (currFlow.getBehavior() instanceof MultiInstanceActivityBehavior) {//会签
|
|
|
multiInstance = true;
|
|
|
|
|
|
- List<Task> taskList = taskService.createTaskQuery().processInstanceId(task.getProcessInstanceId()).list();
|
|
|
+ List<Task> taskList = taskService.createTaskQuery().processInstanceId(task.getProcessInstanceId())
|
|
|
+ .list();
|
|
|
List<String> taskApproveList = new ArrayList<>();
|
|
|
for (Task t : taskList) {
|
|
|
if (Objects.equals(String.valueOf(t.getAssignee()), String.valueOf(userId))) {
|
|
@@ -638,7 +686,8 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
throw ExceptionResultEnum.ERROR.exception("该审批人已有审批权限,无需流转");
|
|
|
}
|
|
|
} else {//或签
|
|
|
- Task taskUser = taskService.createTaskQuery().taskId(String.valueOf(taskId)).taskCandidateOrAssigned(String.valueOf(userId)).singleResult();
|
|
|
+ Task taskUser = taskService.createTaskQuery().taskId(String.valueOf(taskId))
|
|
|
+ .taskCandidateOrAssigned(String.valueOf(userId)).singleResult();
|
|
|
if (Objects.nonNull(taskUser)) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("该审批人已有审批权限,无需流转");
|
|
|
}
|
|
@@ -651,12 +700,16 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
taskService.setAssignee(String.valueOf(taskId), String.valueOf(userId));
|
|
|
}
|
|
|
|
|
|
- TFCustomFlowEntity tfCustomFlowEntity = tfCustomFlowEntityService.getOne(new QueryWrapper<TFCustomFlowEntity>().lambda().eq(TFCustomFlowEntity::getFlowId, Long.parseLong(task.getProcessInstanceId())));
|
|
|
- Optional.ofNullable(tfCustomFlowEntity).orElseThrow(() -> ExceptionResultEnum.FLOW_ENTITY_NO_DATA.exception());
|
|
|
+ TFCustomFlowEntity tfCustomFlowEntity = tfCustomFlowEntityService.getOne(
|
|
|
+ new QueryWrapper<TFCustomFlowEntity>().lambda()
|
|
|
+ .eq(TFCustomFlowEntity::getFlowId, Long.parseLong(task.getProcessInstanceId())));
|
|
|
+ Optional.ofNullable(tfCustomFlowEntity)
|
|
|
+ .orElseThrow(() -> ExceptionResultEnum.FLOW_ENTITY_NO_DATA.exception());
|
|
|
|
|
|
FlowResult flowResult = JSONObject.parseObject(tfCustomFlowEntity.getFlowProcessVar(), FlowResult.class);
|
|
|
LinkedHashMap<String, FlowTaskResult> setupMap = flowResult.getSetupMap();
|
|
|
- FlowTaskResult currFlowTaskResult = GsonUtil.fromJson(GsonUtil.toJson(setupMap.get(task.getTaskDefinitionKey())), FlowTaskResult.class);
|
|
|
+ FlowTaskResult currFlowTaskResult = GsonUtil.fromJson(
|
|
|
+ GsonUtil.toJson(setupMap.get(task.getTaskDefinitionKey())), FlowTaskResult.class);
|
|
|
TFFlowLog tfFlowLog = new TFFlowLog(sysUser.getOrgId(), sysUser.getId(), sysUser.getId(),
|
|
|
currFlowTaskResult.getSetup(), Long.parseLong(task.getProcessInstanceId()),
|
|
|
Long.parseLong(task.getId()), tfCustomFlowEntity.getId(), String.valueOf(userId));
|
|
@@ -668,7 +721,9 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
SysOrg exchangeOrg = commonCacheService.orgCache(exchangeUser.getOrgId());
|
|
|
String orgName = Objects.nonNull(sysOrg) ? sysOrg.getName() : "无机构";
|
|
|
String exchangeOrgName = Objects.nonNull(exchangeOrg) ? exchangeOrg.getName() : "无机构";
|
|
|
- tfFlowLog.setApproveRemark(sysUser.getRealName() + "(" + orgName + ")转" + exchangeUser.getRealName() + "(" + exchangeOrgName + ")审批");
|
|
|
+ tfFlowLog.setApproveRemark(
|
|
|
+ sysUser.getRealName() + "(" + orgName + ")转" + exchangeUser.getRealName() + "(" + exchangeOrgName
|
|
|
+ + ")审批");
|
|
|
tfFlowLogService.save(tfFlowLog);
|
|
|
} catch (Exception e) {
|
|
|
log.error(SystemConstant.LOG_ERROR, e);
|
|
@@ -694,12 +749,14 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
public Boolean flowEnd(Long flowId) {
|
|
|
Optional.ofNullable(flowId).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("流程id不能为空"));
|
|
|
SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
- boolean lock = memoryLock.lock(SystemConstant.LOCK_FLOW_END_PREFIX + flowId, flowId, SystemConstant.LOCK_FLOW_TIME_OUT);
|
|
|
+ boolean lock = memoryLock.lock(SystemConstant.LOCK_FLOW_END_PREFIX + flowId, flowId,
|
|
|
+ SystemConstant.LOCK_FLOW_TIME_OUT);
|
|
|
if (!lock) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("正在终止中,请稍候再试!");
|
|
|
}
|
|
|
try {
|
|
|
- TFFlowApprove tfFlowApprove = tfFlowApproveService.getOne(new QueryWrapper<TFFlowApprove>().lambda().eq(TFFlowApprove::getFlowId, flowId));
|
|
|
+ TFFlowApprove tfFlowApprove = tfFlowApproveService.getOne(
|
|
|
+ new QueryWrapper<TFFlowApprove>().lambda().eq(TFFlowApprove::getFlowId, flowId));
|
|
|
Optional.ofNullable(tfFlowApprove).orElseThrow(() -> ExceptionResultEnum.FLOW_APPROVE_NO_DATA.exception());
|
|
|
|
|
|
if (tfFlowApprove.getStatus() == FlowStatusEnum.FINISH) {
|
|
@@ -708,8 +765,25 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
throw ExceptionResultEnum.ERROR.exception("该流程已作废");
|
|
|
}
|
|
|
|
|
|
- TFCustomFlowEntity tfCustomFlowEntity = tfCustomFlowEntityService.getOne(new QueryWrapper<TFCustomFlowEntity>().lambda().eq(TFCustomFlowEntity::getFlowId, flowId));
|
|
|
- Optional.ofNullable(tfCustomFlowEntity).orElseThrow(() -> ExceptionResultEnum.FLOW_ENTITY_NO_DATA.exception());
|
|
|
+ TFCustomFlowEntity tfCustomFlowEntity = tfCustomFlowEntityService.getOne(
|
|
|
+ new QueryWrapper<TFCustomFlowEntity>().lambda().eq(TFCustomFlowEntity::getFlowId, flowId));
|
|
|
+ Optional.ofNullable(tfCustomFlowEntity)
|
|
|
+ .orElseThrow(() -> ExceptionResultEnum.FLOW_ENTITY_NO_DATA.exception());
|
|
|
+
|
|
|
+ TFCustomFlow tfCustomFlow = tfCustomFlowService.getById(tfCustomFlowEntity.gettFCustomFlowId());
|
|
|
+ Optional.ofNullable(tfCustomFlow).orElseThrow(() -> ExceptionResultEnum.FLOW_CUSTOM_NO_DATA.exception());
|
|
|
+
|
|
|
+ if (tfCustomFlow.getType() == TFCustomTypeEnum.OFFICE_SOP_FLOW && tfFlowApprove.getSetup().intValue() >= 4
|
|
|
+ && tfFlowApprove.getSetup().intValue() < 8) {
|
|
|
+ FlowTaskResult flowTaskResultDeviceOut = tbSopInfoService.getFormProperties(tfCustomFlowEntity, 4);
|
|
|
+ tbDeviceDeliveryService.updateDeviceRelated(flowTaskResultDeviceOut, tfCustomFlowEntity.getCrmNo(),
|
|
|
+ tfCustomFlowEntity.getCode(), null, sysUser.getId(), false);
|
|
|
+ } else if (tfCustomFlow.getType() == TFCustomTypeEnum.CLOUD_MARK_SOP_FLOW
|
|
|
+ && tfFlowApprove.getSetup().intValue() >= 4) {
|
|
|
+ FlowTaskResult flowTaskResultDeviceOut = tbSopInfoService.getFormProperties(tfCustomFlowEntity, 4);
|
|
|
+ tbDeviceDeliveryService.updateDeviceRelated(flowTaskResultDeviceOut, tfCustomFlowEntity.getCrmNo(),
|
|
|
+ tfCustomFlowEntity.getCode(), DeviceDeliveryStatusEnum.RECEIVE, sysUser.getId(), true);
|
|
|
+ }
|
|
|
|
|
|
FlowResult flowResult = JSONObject.parseObject(tfCustomFlowEntity.getFlowProcessVar(), FlowResult.class);
|
|
|
LinkedHashMap<String, FlowTaskResult> setupMap = flowResult.getSetupMap();
|
|
@@ -717,11 +791,12 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
if (CollectionUtils.isEmpty(taskList)) {
|
|
|
throw ExceptionResultEnum.FLOW_TASK_NO_DATA.exception();
|
|
|
}
|
|
|
- FlowTaskResult currFlowTaskResult = GsonUtil.fromJson(GsonUtil.toJson(setupMap.get(taskList.get(0).getTaskDefinitionKey())), FlowTaskResult.class);
|
|
|
+ FlowTaskResult currFlowTaskResult = GsonUtil.fromJson(
|
|
|
+ GsonUtil.toJson(setupMap.get(taskList.get(0).getTaskDefinitionKey())), FlowTaskResult.class);
|
|
|
|
|
|
TFFlowLog tfFlowLog = new TFFlowLog(sysUser.getOrgId(), sysUser.getId(), sysUser.getId(),
|
|
|
- currFlowTaskResult.getSetup(), flowId,
|
|
|
- Long.parseLong(taskList.get(0).getId()), tfCustomFlowEntity.getId(), null);
|
|
|
+ currFlowTaskResult.getSetup(), flowId, Long.parseLong(taskList.get(0).getId()),
|
|
|
+ tfCustomFlowEntity.getId(), null);
|
|
|
tfFlowLog.setApproveOperation(FlowApproveOperationEnum.END);
|
|
|
tfFlowLog.setApproveRemark(sysUser.getRealName() + "终止流程");
|
|
|
tfFlowLogService.save(tfFlowLog);
|
|
@@ -795,9 +870,11 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
}
|
|
|
TFCustomFlowEntity tfCustomFlowEntity = null;
|
|
|
if (Objects.nonNull(flowId)) {
|
|
|
- tfCustomFlowEntity = tfCustomFlowEntityService.getOne(new QueryWrapper<TFCustomFlowEntity>().lambda().eq(TFCustomFlowEntity::getFlowId, flowId));
|
|
|
+ tfCustomFlowEntity = tfCustomFlowEntityService.getOne(
|
|
|
+ new QueryWrapper<TFCustomFlowEntity>().lambda().eq(TFCustomFlowEntity::getFlowId, flowId));
|
|
|
} else {
|
|
|
- tfCustomFlowEntity = tfCustomFlowEntityService.getOne(new QueryWrapper<TFCustomFlowEntity>().lambda().eq(TFCustomFlowEntity::getCode, code));
|
|
|
+ tfCustomFlowEntity = tfCustomFlowEntityService.getOne(
|
|
|
+ new QueryWrapper<TFCustomFlowEntity>().lambda().eq(TFCustomFlowEntity::getCode, code));
|
|
|
}
|
|
|
Optional.ofNullable(tfCustomFlowEntity).orElseThrow(() -> ExceptionResultEnum.FLOW_ENTITY_NO_DATA.exception());
|
|
|
flowId = Objects.isNull(flowId) ? tfCustomFlowEntity.getFlowId() : flowId;
|
|
@@ -806,7 +883,8 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
Optional.ofNullable(tfCustomFlow).orElseThrow(() -> ExceptionResultEnum.FLOW_CUSTOM_NO_DATA.exception());
|
|
|
|
|
|
//获取当前流程节点
|
|
|
- TFFlowApprove tfFlowApprove = tfFlowApproveService.getOne(new QueryWrapper<TFFlowApprove>().lambda().eq(TFFlowApprove::getFlowId, flowId));
|
|
|
+ TFFlowApprove tfFlowApprove = tfFlowApproveService.getOne(
|
|
|
+ new QueryWrapper<TFFlowApprove>().lambda().eq(TFFlowApprove::getFlowId, flowId));
|
|
|
Optional.ofNullable(tfFlowApprove).orElseThrow(() -> ExceptionResultEnum.FLOW_APPROVE_NO_DATA.exception());
|
|
|
|
|
|
FlowResult flowResult = JSONObject.parseObject(tfCustomFlowEntity.getFlowProcessVar(), FlowResult.class);
|
|
@@ -824,13 +902,16 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
//获取流程审批历史
|
|
|
List<TFFlowLogResult> tfFlowLogResultList = tfFlowLogService.findByObjectId(tfCustomFlowEntity.getId());
|
|
|
if (!CollectionUtils.isEmpty(tfFlowLogResultList)) {
|
|
|
- flowApproveHistoryList = GsonUtil.fromJson(GsonUtil.toJson(tfFlowLogResultList), new TypeToken<List<TFFlowViewLogResult>>() {
|
|
|
- }.getType());
|
|
|
+ flowApproveHistoryList = GsonUtil.fromJson(GsonUtil.toJson(tfFlowLogResultList),
|
|
|
+ new TypeToken<List<TFFlowViewLogResult>>() {
|
|
|
+
|
|
|
+ }.getType());
|
|
|
for (TFFlowViewLogResult t : flowApproveHistoryList) {
|
|
|
t.setMessageType(FlowMsgTypeEnum.STANDARD);
|
|
|
approveSetupMap.put(t.getApproveSetup(), t.getApproveSetup());
|
|
|
- if (Objects.nonNull(t.getApproveRemark()) && t.getApproveRemark().contains(";") && tfCustomFlow.getType() == TFCustomTypeEnum.QUALITY_PROBLEM_FLOW
|
|
|
- && (t.getApproveSetup().intValue() == 3 || t.getApproveSetup().intValue() == 4)) {
|
|
|
+ if (Objects.nonNull(t.getApproveRemark()) && t.getApproveRemark().contains(";")
|
|
|
+ && tfCustomFlow.getType() == TFCustomTypeEnum.QUALITY_PROBLEM_FLOW && (
|
|
|
+ t.getApproveSetup().intValue() == 3 || t.getApproveSetup().intValue() == 4)) {
|
|
|
String[] strs = t.getApproveRemark().split(";");
|
|
|
StringJoiner stringJoiner = new StringJoiner("");
|
|
|
for (int i = 1; i < strs.length; i++) {
|
|
@@ -838,13 +919,15 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
}
|
|
|
t.setApproveFormSuggestion(stringJoiner.toString());
|
|
|
if (t.getApproveSetup().intValue() == 3) {
|
|
|
- flowFormSuggestionJiaResultList.add(new FlowFormSuggestionJiaResult(t.getCreateTime(), t.getApproveUserName(),
|
|
|
- t.getApproveOperation() == FlowApproveOperationEnum.APPROVE ? "同意" : "不同意", t.getApproveFormSuggestion(),
|
|
|
- strs[0]));
|
|
|
+ flowFormSuggestionJiaResultList.add(
|
|
|
+ new FlowFormSuggestionJiaResult(t.getCreateTime(), t.getApproveUserName(),
|
|
|
+ t.getApproveOperation() == FlowApproveOperationEnum.APPROVE ? "同意" : "不同意",
|
|
|
+ t.getApproveFormSuggestion(), strs[0]));
|
|
|
} else {
|
|
|
- flowFormSuggestionYiResultList.add(new FlowFormSuggestionYiResult(t.getCreateTime(), t.getApproveUserName(),
|
|
|
- t.getApproveOperation() == FlowApproveOperationEnum.APPROVE ? "同意" : "不同意", t.getApproveFormSuggestion(),
|
|
|
- strs[0]));
|
|
|
+ flowFormSuggestionYiResultList.add(
|
|
|
+ new FlowFormSuggestionYiResult(t.getCreateTime(), t.getApproveUserName(),
|
|
|
+ t.getApproveOperation() == FlowApproveOperationEnum.APPROVE ? "同意" : "不同意",
|
|
|
+ t.getApproveFormSuggestion(), strs[0]));
|
|
|
}
|
|
|
}
|
|
|
if (Objects.nonNull(t.getApproveOperation())) {
|
|
@@ -863,21 +946,25 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
FlowTaskResult flowTaskResult = GsonUtil.fromJson(GsonUtil.toJson(entry.getValue()), FlowTaskResult.class);
|
|
|
if (flowTaskResult.getSetup().intValue() > 0) {
|
|
|
//正在审批的表单
|
|
|
- if (Objects.nonNull(tfFlowApprove.getSetup()) && flowTaskResult.getSetup().intValue() == tfFlowApprove.getSetup().intValue()) {
|
|
|
+ if (Objects.nonNull(tfFlowApprove.getSetup())
|
|
|
+ && flowTaskResult.getSetup().intValue() == tfFlowApprove.getSetup().intValue()) {
|
|
|
currFlowTaskResult = flowTaskResult;
|
|
|
- List<Task> taskList = taskService.createTaskQuery().processInstanceId(String.valueOf(flowId)).list();
|
|
|
+ List<Task> taskList = taskService.createTaskQuery().processInstanceId(String.valueOf(flowId))
|
|
|
+ .list();
|
|
|
if (!CollectionUtils.isEmpty(taskList)) {
|
|
|
taskIdList = taskList.stream().map(s -> Long.parseLong(s.getId())).collect(Collectors.toList());
|
|
|
}
|
|
|
} else if (approveSetupMap.containsKey(flowTaskResult.getSetup())) {//已经审批过的表单
|
|
|
- flowTaskHistoryList = CollectionUtils.isEmpty(flowTaskHistoryList) ? new ArrayList<>(approveSetupMap.size()) : flowTaskHistoryList;
|
|
|
+ flowTaskHistoryList = CollectionUtils.isEmpty(flowTaskHistoryList) ?
|
|
|
+ new ArrayList<>(approveSetupMap.size()) :
|
|
|
+ flowTaskHistoryList;
|
|
|
flowTaskHistoryList.add(flowTaskResult);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
- if ((tfCustomFlow.getType() == TFCustomTypeEnum.OFFICE_SOP_FLOW ||
|
|
|
- tfCustomFlow.getType() == TFCustomTypeEnum.CLOUD_MARK_SOP_FLOW)) {
|
|
|
+ if ((tfCustomFlow.getType() == TFCustomTypeEnum.OFFICE_SOP_FLOW
|
|
|
+ || tfCustomFlow.getType() == TFCustomTypeEnum.CLOUD_MARK_SOP_FLOW)) {
|
|
|
if (Objects.nonNull(currFlowTaskResult) && currFlowTaskResult.getSetup().intValue() == 3) {
|
|
|
List<Task> taskList = taskService.createTaskQuery().processInstanceId(String.valueOf(flowId)).list();
|
|
|
List<FlowFormWidgetResult> flowFormWidgetResultListNew = new ArrayList<>();
|
|
@@ -903,14 +990,15 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
List<FlowFormWidgetResult> flowFormWidgetResultList = currFlowTaskResult.getFormProperty();
|
|
|
for (FlowFormWidgetResult f : flowFormWidgetResultList) {
|
|
|
if (Objects.nonNull(sysRole)) {
|
|
|
- if (f.getRoleType() == sysRole.getType() &&
|
|
|
- (sysRole.getType() == RoleTypeEnum.REGION_MANAGER || sysRole.getType() == RoleTypeEnum.EFFECT_ENGINEER)) {
|
|
|
+ if (f.getRoleType() == sysRole.getType() && (
|
|
|
+ sysRole.getType() == RoleTypeEnum.REGION_MANAGER
|
|
|
+ || sysRole.getType() == RoleTypeEnum.EFFECT_ENGINEER)) {
|
|
|
flowFormWidgetResultListNew.add(f);
|
|
|
}
|
|
|
} else {
|
|
|
- if (f.getFormId().contains(SystemConstant.APPROVE_RADIO_REGION) ||
|
|
|
- f.getFormId().contains(SystemConstant.APPROVE_REMARK_REGION) ||
|
|
|
- f.getFormId().contains(SystemConstant.SIGN_REGION)) {
|
|
|
+ if (f.getFormId().contains(SystemConstant.APPROVE_RADIO_REGION) || f.getFormId()
|
|
|
+ .contains(SystemConstant.APPROVE_REMARK_REGION) || f.getFormId()
|
|
|
+ .contains(SystemConstant.SIGN_REGION)) {
|
|
|
flowFormWidgetResultListNew.add(f);
|
|
|
}
|
|
|
}
|
|
@@ -941,9 +1029,9 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
f.setReadable(true);
|
|
|
f.setWritable(false);
|
|
|
} else {
|
|
|
- if (f.getFormId().contains(SystemConstant.APPROVE_RADIO_REGION) ||
|
|
|
- f.getFormId().contains(SystemConstant.APPROVE_REMARK_REGION) ||
|
|
|
- f.getFormId().contains(SystemConstant.SIGN_REGION)) {
|
|
|
+ if (f.getFormId().contains(SystemConstant.APPROVE_RADIO_REGION) || f.getFormId()
|
|
|
+ .contains(SystemConstant.APPROVE_REMARK_REGION) || f.getFormId()
|
|
|
+ .contains(SystemConstant.SIGN_REGION)) {
|
|
|
flowFormWidgetResultListNew.add(f);
|
|
|
}
|
|
|
}
|
|
@@ -957,9 +1045,12 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
|
|
|
CrmProjectResult crmProjectResult = null;
|
|
|
if (Objects.nonNull(tfCustomFlowEntity.getCrmNo())) {
|
|
|
- crmProjectResult = tbCrmService.findCrmProjectBySopNoOrCrmNo(tfCustomFlowEntity.getCode(), tfCustomFlowEntity.getCrmNo());
|
|
|
+ crmProjectResult = tbCrmService.findCrmProjectBySopNoOrCrmNo(tfCustomFlowEntity.getCode(),
|
|
|
+ tfCustomFlowEntity.getCrmNo());
|
|
|
}
|
|
|
- return new FlowViewResult(flowId, tfFlowApprove.getStatus(), tfCustomFlowEntity.getCode(), taskIdList, flowTaskHistoryList, currFlowTaskResult, flowApproveHistoryList, crmProjectResult, flowFormSuggestionJiaResultList, flowFormSuggestionYiResultList);
|
|
|
+ return new FlowViewResult(flowId, tfFlowApprove.getStatus(), tfCustomFlowEntity.getCode(), taskIdList,
|
|
|
+ flowTaskHistoryList, currFlowTaskResult, flowApproveHistoryList, crmProjectResult,
|
|
|
+ flowFormSuggestionJiaResultList, flowFormSuggestionYiResultList);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -993,15 +1084,14 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
* @param tfCustomFlow
|
|
|
* @return
|
|
|
*/
|
|
|
- protected Map<String, Object> getFlowFormPropertie(Map<String, Object> map,
|
|
|
- List<Task> taskList,
|
|
|
- FlowResult flowResult,
|
|
|
- TFCustomFlow tfCustomFlow) {
|
|
|
+ protected Map<String, Object> getFlowFormPropertie(Map<String, Object> map, List<Task> taskList,
|
|
|
+ FlowResult flowResult, TFCustomFlow tfCustomFlow) {
|
|
|
if (CollectionUtils.isEmpty(taskList)) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("流程任务数据为空!");
|
|
|
}
|
|
|
Long flowId = Long.parseLong(taskList.get(0).getProcessInstanceId());
|
|
|
- TFCustomFlowEntity tfCustomFlowEntity = tfCustomFlowEntityService.getOne(new QueryWrapper<TFCustomFlowEntity>().lambda().eq(TFCustomFlowEntity::getFlowId, flowId));
|
|
|
+ TFCustomFlowEntity tfCustomFlowEntity = tfCustomFlowEntityService.getOne(
|
|
|
+ new QueryWrapper<TFCustomFlowEntity>().lambda().eq(TFCustomFlowEntity::getFlowId, flowId));
|
|
|
Optional.ofNullable(tfCustomFlowEntity).orElseThrow(() -> ExceptionResultEnum.FLOW_ENTITY_NO_DATA.exception());
|
|
|
tfCustomFlow = tfCustomFlowService.getById(tfCustomFlowEntity.gettFCustomFlowId());
|
|
|
Optional.ofNullable(tfCustomFlow).orElseThrow(() -> ExceptionResultEnum.FLOW_DEPLOYMENT_NO_DATA.exception());
|
|
@@ -1009,7 +1099,8 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
flowResult = JSONObject.parseObject(tfCustomFlowEntity.getFlowProcessVar(), FlowResult.class);
|
|
|
LinkedHashMap<String, FlowTaskResult> setupMap = flowResult.getSetupMap();
|
|
|
for (Task task : taskList) {
|
|
|
- FlowTaskResult currFlowTaskResult = GsonUtil.fromJson(GsonUtil.toJson(setupMap.get(task.getTaskDefinitionKey())), FlowTaskResult.class);
|
|
|
+ FlowTaskResult currFlowTaskResult = GsonUtil.fromJson(
|
|
|
+ GsonUtil.toJson(setupMap.get(task.getTaskDefinitionKey())), FlowTaskResult.class);
|
|
|
map = this.getFlowFormPropertie(flowResult, map, currFlowTaskResult.getSetup());
|
|
|
}
|
|
|
map.put(SystemConstant.FLOW_DEPLOYMENT_ID, tfCustomFlow.getFlowDeploymentId());
|
|
@@ -1028,7 +1119,8 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
protected Map<String, Object> getFlowFormPropertie(FlowResult flowResult, Map<String, Object> map, int setup) {
|
|
|
Map<String, FlowTaskResult> setupMap = flowResult.getSetupMap();
|
|
|
for (Map.Entry<String, FlowTaskResult> entry : setupMap.entrySet()) {
|
|
|
- FlowTaskResult flowTaskResultTemp = GsonUtil.fromJson(GsonUtil.toJson(entry.getValue()), FlowTaskResult.class);
|
|
|
+ FlowTaskResult flowTaskResultTemp = GsonUtil.fromJson(GsonUtil.toJson(entry.getValue()),
|
|
|
+ FlowTaskResult.class);
|
|
|
if (flowTaskResultTemp.getSetup().intValue() == setup) {
|
|
|
map.put(SystemConstant.FORM_PROPERTIES, flowTaskResultTemp);
|
|
|
break;
|
|
@@ -1049,17 +1141,14 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
* @param approvePass
|
|
|
* @return
|
|
|
*/
|
|
|
- protected FlowTaskResult getNextFlowTaskResult(Integer nrOfCompletedInstances,
|
|
|
- Integer nrOfInstances,
|
|
|
- FlowTaskResult currFlowTaskResult,
|
|
|
- FlowTaskResult nextFlowTaskResult,
|
|
|
- int currSetup,
|
|
|
- Map<String, FlowTaskResult> setupMap,
|
|
|
- FlowApprovePassEnum approvePass) {
|
|
|
- if (approvePass == FlowApprovePassEnum.PASS || approvePass == FlowApprovePassEnum.START || approvePass == FlowApprovePassEnum.DRAFT) {
|
|
|
- if (Objects.nonNull(nrOfCompletedInstances)
|
|
|
- && Objects.nonNull(nrOfInstances)
|
|
|
- && nrOfCompletedInstances.intValue() != nrOfInstances.intValue() || approvePass == FlowApprovePassEnum.DRAFT) {
|
|
|
+ protected FlowTaskResult getNextFlowTaskResult(Integer nrOfCompletedInstances, Integer nrOfInstances,
|
|
|
+ FlowTaskResult currFlowTaskResult, FlowTaskResult nextFlowTaskResult, int currSetup,
|
|
|
+ Map<String, FlowTaskResult> setupMap, FlowApprovePassEnum approvePass) {
|
|
|
+ if (approvePass == FlowApprovePassEnum.PASS || approvePass == FlowApprovePassEnum.START
|
|
|
+ || approvePass == FlowApprovePassEnum.DRAFT) {
|
|
|
+ if (Objects.nonNull(nrOfCompletedInstances) && Objects.nonNull(nrOfInstances)
|
|
|
+ && nrOfCompletedInstances.intValue() != nrOfInstances.intValue()
|
|
|
+ || approvePass == FlowApprovePassEnum.DRAFT) {
|
|
|
nextFlowTaskResult = currFlowTaskResult;
|
|
|
} else {
|
|
|
nextFlowTaskResult = this.getNextFlowTaskResult(setupMap, currSetup, nextFlowTaskResult);
|
|
@@ -1079,11 +1168,11 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
* @param nextFlowTaskResult
|
|
|
* @return
|
|
|
*/
|
|
|
- protected FlowTaskResult getNextFlowTaskResult(Map<String, FlowTaskResult> setupMap,
|
|
|
- int currSetup,
|
|
|
- FlowTaskResult nextFlowTaskResult) {
|
|
|
+ protected FlowTaskResult getNextFlowTaskResult(Map<String, FlowTaskResult> setupMap, int currSetup,
|
|
|
+ FlowTaskResult nextFlowTaskResult) {
|
|
|
for (Map.Entry<String, FlowTaskResult> entry : setupMap.entrySet()) {
|
|
|
- FlowTaskResult flowTaskResultTemp = GsonUtil.fromJson(GsonUtil.toJson(entry.getValue()), FlowTaskResult.class);
|
|
|
+ FlowTaskResult flowTaskResultTemp = GsonUtil.fromJson(GsonUtil.toJson(entry.getValue()),
|
|
|
+ FlowTaskResult.class);
|
|
|
if (flowTaskResultTemp.getSetup().intValue() == currSetup) {
|
|
|
nextFlowTaskResult = flowTaskResultTemp;
|
|
|
break;
|
|
@@ -1107,17 +1196,10 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
* @param approvePass
|
|
|
* @param approveRemark
|
|
|
*/
|
|
|
- public void approvePass(FlowTaskResult currFlowTaskResult,
|
|
|
- Map<String, FlowTaskResult> setupMap,
|
|
|
- boolean multiInstance,
|
|
|
- Integer nrOfCompletedInstances,
|
|
|
- Integer nrOfInstances,
|
|
|
- TFFlowApprove tfFlowApprove,
|
|
|
- TFFlowLog tfFlowLog,
|
|
|
- FlowTaskResult nextFlowTaskResult,
|
|
|
- Map<String, Object> map,
|
|
|
- FlowApprovePassEnum approvePass,
|
|
|
- String approveRemark) {
|
|
|
+ public void approvePass(FlowTaskResult currFlowTaskResult, Map<String, FlowTaskResult> setupMap,
|
|
|
+ boolean multiInstance, Integer nrOfCompletedInstances, Integer nrOfInstances, TFFlowApprove tfFlowApprove,
|
|
|
+ TFFlowLog tfFlowLog, FlowTaskResult nextFlowTaskResult, Map<String, Object> map,
|
|
|
+ FlowApprovePassEnum approvePass, String approveRemark) {
|
|
|
if (multiInstance) {
|
|
|
map.computeIfAbsent(FlowApproveOperationEnum.REJECT.getId() + currFlowTaskResult.getSetup(), v -> 0);
|
|
|
}
|
|
@@ -1125,8 +1207,7 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
if (approvePass == FlowApprovePassEnum.DRAFT) {
|
|
|
tfFlowApprove.setStatus(FlowStatusEnum.valueOf(approvePass.name()));
|
|
|
} else {
|
|
|
- if (multiInstance && Objects.nonNull(nrOfCompletedInstances)
|
|
|
- && Objects.nonNull(nrOfInstances)
|
|
|
+ if (multiInstance && Objects.nonNull(nrOfCompletedInstances) && Objects.nonNull(nrOfInstances)
|
|
|
&& nrOfCompletedInstances.intValue() == nrOfInstances.intValue()) {
|
|
|
tfFlowApprove.setStatus(FlowStatusEnum.FINISH);
|
|
|
tfFlowApprove.setSetup(FlowApproveSetupEnum.FINISH.getSetup());
|
|
@@ -1174,14 +1255,9 @@ public class ActivitiServiceImpl implements ActivitiService {
|
|
|
* @param approvePass
|
|
|
* @param approveRemark
|
|
|
*/
|
|
|
- protected void approveReject(boolean multiInstance,
|
|
|
- Map<String, Object> map,
|
|
|
- FlowTaskResult currFlowTaskResult,
|
|
|
- FlowTaskResult nextFlowTaskResult,
|
|
|
- TFFlowApprove tfFlowApprove,
|
|
|
- TFFlowLog tfFlowLog,
|
|
|
- FlowApprovePassEnum approvePass,
|
|
|
- String approveRemark) {
|
|
|
+ protected void approveReject(boolean multiInstance, Map<String, Object> map, FlowTaskResult currFlowTaskResult,
|
|
|
+ FlowTaskResult nextFlowTaskResult, TFFlowApprove tfFlowApprove, TFFlowLog tfFlowLog,
|
|
|
+ FlowApprovePassEnum approvePass, String approveRemark) {
|
|
|
if (multiInstance) {
|
|
|
map.computeIfAbsent(FlowApproveOperationEnum.REJECT.getId() + currFlowTaskResult.getSetup(), v -> 1);
|
|
|
}
|