|
|
@@ -339,7 +339,9 @@ public class ApprovalEngineServiceImpl implements IApprovalEngineService {
|
|
339
|
339
|
@Override
|
|
340
|
340
|
public String getWorkflowCodeByBusinessAndLevel(String businessType, String level, String submitterRole) {
|
|
341
|
341
|
if ("SEIZURE_REPORT".equals(businessType)) {
|
|
342
|
|
- if ("SEIZURE_REPORT_LEADER".equals(submitterRole)) {
|
|
|
342
|
+ if ("SEIZURE_REPORT_DEFAULT".equals(submitterRole)) {
|
|
|
343
|
+ return "SEIZURE_REPORT_DEFAULT";
|
|
|
344
|
+ } else if ("SEIZURE_REPORT_LEADER".equals(submitterRole)) {
|
|
343
|
345
|
return "SEIZURE_REPORT_LEADER";
|
|
344
|
346
|
} else {
|
|
345
|
347
|
return "SEIZURE_REPORT_STAFF";
|
|
|
@@ -353,6 +355,8 @@ public class ApprovalEngineServiceImpl implements IApprovalEngineService {
|
|
353
|
355
|
return "SECTION_LEVEL";
|
|
354
|
356
|
case "GROUP":
|
|
355
|
357
|
return "GROUP_LEVEL";
|
|
|
358
|
+ case "BRIGADE":
|
|
|
359
|
+ return "BRIGADE_LEVEL";
|
|
356
|
360
|
default:
|
|
357
|
361
|
throw new RuntimeException("未知的级别类型:" + level);
|
|
358
|
362
|
}
|
|
|
@@ -743,7 +747,14 @@ public class ApprovalEngineServiceImpl implements IApprovalEngineService {
|
|
743
|
747
|
handleSectionCheckNodeAssignment(instance, nextNode, formData);
|
|
744
|
748
|
}
|
|
745
|
749
|
// 检查下一节点是否需要动态分配
|
|
746
|
|
- else if (isSeizureReportWorkflow(instance) && ("GROUP_LEADER".equals(nextNode.getApproverType()) || "SECTION_LEADER".equals(nextNode.getApproverType()))) {
|
|
|
750
|
+ else if (isSeizureReportWorkflow(instance) && "SECTION_KEZHANG".equals(nextNode.getApproverType())) {
|
|
|
751
|
+ Long submitterId = instance.getSubmitterId();
|
|
|
752
|
+ if (ObjectUtil.isNotEmpty(currentTask) && ObjectUtil.isNotEmpty(currentTask.getAssigneeId())) {
|
|
|
753
|
+ submitterId = currentTask.getAssigneeId();
|
|
|
754
|
+ }
|
|
|
755
|
+ // 违禁品审批流程:根据提交人角色分配给其主管
|
|
|
756
|
+ createTasksForNodeWithKeZhang(instance, nextNode, formData, null, submitterId);
|
|
|
757
|
+ } else if (isSeizureReportWorkflow(instance) && ("GROUP_LEADER".equals(nextNode.getApproverType()) || "SECTION_LEADER".equals(nextNode.getApproverType()))) {
|
|
747
|
758
|
Long submitterId = instance.getSubmitterId();
|
|
748
|
759
|
if ("SECTION_LEADER".equals(nextNode.getApproverType()) && ObjectUtil.isNotEmpty(currentTask) && ObjectUtil.isNotEmpty(currentTask.getAssigneeId())) {
|
|
749
|
760
|
submitterId = currentTask.getAssigneeId();
|
|
|
@@ -1701,4 +1712,55 @@ public class ApprovalEngineServiceImpl implements IApprovalEngineService {
|
|
1701
|
1712
|
return null;
|
|
1702
|
1713
|
}
|
|
1703
|
1714
|
|
|
|
1715
|
+ /**
|
|
|
1716
|
+ * 为违禁品审批节点创建任务(根据提交人分配给其主管)
|
|
|
1717
|
+ */
|
|
|
1718
|
+ private void createTasksForNodeWithKeZhang(ApprovalInstance instance, ApprovalNodeDefinition node, Map<String, Object> formData, String remark, Long submitterId) {
|
|
|
1719
|
+ try {
|
|
|
1720
|
+ // 根据提交人查找其主管
|
|
|
1721
|
+ List<Long> assigneeIds = approvalUserService.getKeZhangByUserId(submitterId);
|
|
|
1722
|
+ if (assigneeIds.isEmpty()) {
|
|
|
1723
|
+ throw new RuntimeException("未找到提交人的主管,无法分配审批任务");
|
|
|
1724
|
+ }
|
|
|
1725
|
+
|
|
|
1726
|
+ for (Long assigneeId : assigneeIds) {
|
|
|
1727
|
+ SysUser user = sysUserMapper.selectUserById(assigneeId);
|
|
|
1728
|
+ if (user != null) {
|
|
|
1729
|
+ ApprovalTask task = new ApprovalTask();
|
|
|
1730
|
+ task.setTaskNo(taskMapper.generateTaskNo());
|
|
|
1731
|
+ task.setInstanceId(instance.getId());
|
|
|
1732
|
+ task.setNodeId(node.getId());
|
|
|
1733
|
+ task.setTaskName(node.getNodeName());
|
|
|
1734
|
+ task.setAssigneeId(assigneeId);
|
|
|
1735
|
+ task.setAssigneeName(user.getNickName());
|
|
|
1736
|
+ task.setAssignTime(DateUtils.getNowDate());
|
|
|
1737
|
+ task.setStatus("PENDING");
|
|
|
1738
|
+
|
|
|
1739
|
+ // 设置表单数据 - 如果formData为空,使用当前实例的formData
|
|
|
1740
|
+ try {
|
|
|
1741
|
+ if (formData != null) {
|
|
|
1742
|
+ task.setFormData(objectMapper.writeValueAsString(formData));
|
|
|
1743
|
+ } else {
|
|
|
1744
|
+ task.setFormData(instance.getFormData());
|
|
|
1745
|
+ }
|
|
|
1746
|
+ } catch (Exception e) {
|
|
|
1747
|
+ // 序列化失败时使用实例的formData
|
|
|
1748
|
+ task.setFormData(instance.getFormData());
|
|
|
1749
|
+ }
|
|
|
1750
|
+
|
|
|
1751
|
+ // 设置超时时间
|
|
|
1752
|
+ if (node.getTimeoutHours() != null && node.getTimeoutHours() > 0) {
|
|
|
1753
|
+ task.setTimeoutTime(DateUtils.addHours(DateUtils.getNowDate(), node.getTimeoutHours()));
|
|
|
1754
|
+ }
|
|
|
1755
|
+
|
|
|
1756
|
+ task.setCreateBy(SecurityUtils.getUsername());
|
|
|
1757
|
+ task.setCreateTime(DateUtils.getNowDate());
|
|
|
1758
|
+
|
|
|
1759
|
+ taskMapper.insertApprovalTask(task);
|
|
|
1760
|
+ }
|
|
|
1761
|
+ }
|
|
|
1762
|
+ } catch (Exception e) {
|
|
|
1763
|
+ throw new RuntimeException("创建违禁品审批任务失败:" + e.getMessage(), e);
|
|
|
1764
|
+ }
|
|
|
1765
|
+ }
|
|
1704
|
1766
|
}
|