diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java index 1ffae62..7327485 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java @@ -227,7 +227,7 @@ String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); childNode.put("childNode", null); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; for (int i = 0; i < incoming.size(); i++) { // TODO: 2022/12/5 此处用的connect第一个参数和并行网关的为何不一样 // TODO: 2022/12/5 为啥有后续节点这里却设置成了endExId @@ -274,7 +274,7 @@ // 1.0 先进行边连接, 暂存 nextNode String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; //其他条件分支和第一个条件分支连线的终点节点相同 for (int i = 0; i < incoming.size(); i++) { process.addFlowElement(connect(incoming.get(i), endExId, sequenceFlows)); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java index 1ffae62..7327485 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java @@ -227,7 +227,7 @@ String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); childNode.put("childNode", null); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; for (int i = 0; i < incoming.size(); i++) { // TODO: 2022/12/5 此处用的connect第一个参数和并行网关的为何不一样 // TODO: 2022/12/5 为啥有后续节点这里却设置成了endExId @@ -274,7 +274,7 @@ // 1.0 先进行边连接, 暂存 nextNode String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; //其他条件分支和第一个条件分支连线的终点节点相同 for (int i = 0; i < incoming.size(); i++) { process.addFlowElement(connect(incoming.get(i), endExId, sequenceFlows)); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 7f8c1e7..5f4178b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -105,7 +105,7 @@ /** * 草稿箱文件编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱文件编辑") @PostMapping("/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterFile meterFile, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java index 1ffae62..7327485 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java @@ -227,7 +227,7 @@ String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); childNode.put("childNode", null); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; for (int i = 0; i < incoming.size(); i++) { // TODO: 2022/12/5 此处用的connect第一个参数和并行网关的为何不一样 // TODO: 2022/12/5 为啥有后续节点这里却设置成了endExId @@ -274,7 +274,7 @@ // 1.0 先进行边连接, 暂存 nextNode String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; //其他条件分支和第一个条件分支连线的终点节点相同 for (int i = 0; i < incoming.size(); i++) { process.addFlowElement(connect(incoming.get(i), endExId, sequenceFlows)); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 7f8c1e7..5f4178b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -105,7 +105,7 @@ /** * 草稿箱文件编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱文件编辑") @PostMapping("/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterFile meterFile, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index e56ed95..f8d072c 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -90,9 +90,9 @@ } /** - * 草稿箱文件编辑 + * 草稿箱溯源供方编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱溯源供方编辑") @PostMapping("/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java index 1ffae62..7327485 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java @@ -227,7 +227,7 @@ String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); childNode.put("childNode", null); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; for (int i = 0; i < incoming.size(); i++) { // TODO: 2022/12/5 此处用的connect第一个参数和并行网关的为何不一样 // TODO: 2022/12/5 为啥有后续节点这里却设置成了endExId @@ -274,7 +274,7 @@ // 1.0 先进行边连接, 暂存 nextNode String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; //其他条件分支和第一个条件分支连线的终点节点相同 for (int i = 0; i < incoming.size(); i++) { process.addFlowElement(connect(incoming.get(i), endExId, sequenceFlows)); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 7f8c1e7..5f4178b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -105,7 +105,7 @@ /** * 草稿箱文件编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱文件编辑") @PostMapping("/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterFile meterFile, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index e56ed95..f8d072c 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -90,9 +90,9 @@ } /** - * 草稿箱文件编辑 + * 草稿箱溯源供方编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱溯源供方编辑") @PostMapping("/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index afdfda8..d60d7f5 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -94,9 +94,9 @@ } /** - * 草稿箱文件编辑 + * 草稿箱计划编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱培训计划编辑") @PostMapping("/plan/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterTrainPlan trainPlan, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java index 1ffae62..7327485 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java @@ -227,7 +227,7 @@ String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); childNode.put("childNode", null); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; for (int i = 0; i < incoming.size(); i++) { // TODO: 2022/12/5 此处用的connect第一个参数和并行网关的为何不一样 // TODO: 2022/12/5 为啥有后续节点这里却设置成了endExId @@ -274,7 +274,7 @@ // 1.0 先进行边连接, 暂存 nextNode String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; //其他条件分支和第一个条件分支连线的终点节点相同 for (int i = 0; i < incoming.size(); i++) { process.addFlowElement(connect(incoming.get(i), endExId, sequenceFlows)); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 7f8c1e7..5f4178b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -105,7 +105,7 @@ /** * 草稿箱文件编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱文件编辑") @PostMapping("/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterFile meterFile, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index e56ed95..f8d072c 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -90,9 +90,9 @@ } /** - * 草稿箱文件编辑 + * 草稿箱溯源供方编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱溯源供方编辑") @PostMapping("/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index afdfda8..d60d7f5 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -94,9 +94,9 @@ } /** - * 草稿箱文件编辑 + * 草稿箱计划编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱培训计划编辑") @PostMapping("/plan/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterTrainPlan trainPlan, BindingResult bindingResult) { diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java index 18ab69f..b9a25a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java @@ -138,7 +138,7 @@ String startUserId = execution.getVariable("root", String.class); assigneeList.add(startUserId); } else if (AssigneeSetTypeEnum.LEADER_TOP == settype) { - // 连续多级主管作为审批人,审批方式由多人审批时审批方式字段决定 + //连续多级主管作为审批人,审批方式由多人审批时审批方式字段决定 //根据发起人查部门,根据部门查主管角色,根据发起人部门查父部门,根据父部门查主管角色,递归 //多实例加签,解决手动加签的情况,这里是还未设置审批人,无需采用多实例加签的功能,增加到assigneeList即可 @@ -219,15 +219,21 @@ private JSONObject getNodeUserList(JSONObject nodeConfig, String taskId) { JSONObject childNode = nodeConfig.getJSONObject("childNode"); if (!Objects.isNull(childNode) && StringUtils.isNotEmpty(childNode.getString("id")) && taskId.equals(childNode.getString("id"))) { -// JSONArray nodeUserList = childNode.getJSONArray("nodeUserList"); -// if (!CollectionUtils.isEmpty(nodeUserList)) { -// return childNode; -// } -// return null; return childNode; } - if (!Objects.isNull(childNode)) { + if (!Objects.isNull(childNode) && Objects.isNull(childNode.getJSONArray("conditionNodes"))) { return getNodeUserList(childNode, taskId); + }else if(!Objects.isNull(childNode) && !Objects.isNull(childNode.getJSONArray("conditionNodes"))){ + //条件节点判断 + JSONArray conditionNodes = childNode.getJSONArray("conditionNodes"); + for (Object conditionNode : conditionNodes) { + JSONObject node = (JSONObject)conditionNode; + if(Objects.isNull(getNodeUserList(node, taskId))){ + continue; + } + //条件节点一定能匹配到任务审批人 + return getNodeUserList(node, taskId); + } } return null; } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java index 1ffae62..7327485 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java @@ -227,7 +227,7 @@ String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); childNode.put("childNode", null); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; for (int i = 0; i < incoming.size(); i++) { // TODO: 2022/12/5 此处用的connect第一个参数和并行网关的为何不一样 // TODO: 2022/12/5 为啥有后续节点这里却设置成了endExId @@ -274,7 +274,7 @@ // 1.0 先进行边连接, 暂存 nextNode String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; //其他条件分支和第一个条件分支连线的终点节点相同 for (int i = 0; i < incoming.size(); i++) { process.addFlowElement(connect(incoming.get(i), endExId, sequenceFlows)); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 7f8c1e7..5f4178b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -105,7 +105,7 @@ /** * 草稿箱文件编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱文件编辑") @PostMapping("/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterFile meterFile, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index e56ed95..f8d072c 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -90,9 +90,9 @@ } /** - * 草稿箱文件编辑 + * 草稿箱溯源供方编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱溯源供方编辑") @PostMapping("/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index afdfda8..d60d7f5 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -94,9 +94,9 @@ } /** - * 草稿箱文件编辑 + * 草稿箱计划编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱培训计划编辑") @PostMapping("/plan/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterTrainPlan trainPlan, BindingResult bindingResult) { diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java index 18ab69f..b9a25a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java @@ -138,7 +138,7 @@ String startUserId = execution.getVariable("root", String.class); assigneeList.add(startUserId); } else if (AssigneeSetTypeEnum.LEADER_TOP == settype) { - // 连续多级主管作为审批人,审批方式由多人审批时审批方式字段决定 + //连续多级主管作为审批人,审批方式由多人审批时审批方式字段决定 //根据发起人查部门,根据部门查主管角色,根据发起人部门查父部门,根据父部门查主管角色,递归 //多实例加签,解决手动加签的情况,这里是还未设置审批人,无需采用多实例加签的功能,增加到assigneeList即可 @@ -219,15 +219,21 @@ private JSONObject getNodeUserList(JSONObject nodeConfig, String taskId) { JSONObject childNode = nodeConfig.getJSONObject("childNode"); if (!Objects.isNull(childNode) && StringUtils.isNotEmpty(childNode.getString("id")) && taskId.equals(childNode.getString("id"))) { -// JSONArray nodeUserList = childNode.getJSONArray("nodeUserList"); -// if (!CollectionUtils.isEmpty(nodeUserList)) { -// return childNode; -// } -// return null; return childNode; } - if (!Objects.isNull(childNode)) { + if (!Objects.isNull(childNode) && Objects.isNull(childNode.getJSONArray("conditionNodes"))) { return getNodeUserList(childNode, taskId); + }else if(!Objects.isNull(childNode) && !Objects.isNull(childNode.getJSONArray("conditionNodes"))){ + //条件节点判断 + JSONArray conditionNodes = childNode.getJSONArray("conditionNodes"); + for (Object conditionNode : conditionNodes) { + JSONObject node = (JSONObject)conditionNode; + if(Objects.isNull(getNodeUserList(node, taskId))){ + continue; + } + //条件节点一定能匹配到任务审批人 + return getNodeUserList(node, taskId); + } } return null; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java index 9528373..cd1066f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java @@ -114,7 +114,12 @@ @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") private String taskId; - @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") - private String processInstanceId; +// @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") +// private String processInstanceId; + /** + * 可选决策项 + */ + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java index 1ffae62..7327485 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java @@ -227,7 +227,7 @@ String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); childNode.put("childNode", null); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; for (int i = 0; i < incoming.size(); i++) { // TODO: 2022/12/5 此处用的connect第一个参数和并行网关的为何不一样 // TODO: 2022/12/5 为啥有后续节点这里却设置成了endExId @@ -274,7 +274,7 @@ // 1.0 先进行边连接, 暂存 nextNode String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; //其他条件分支和第一个条件分支连线的终点节点相同 for (int i = 0; i < incoming.size(); i++) { process.addFlowElement(connect(incoming.get(i), endExId, sequenceFlows)); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 7f8c1e7..5f4178b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -105,7 +105,7 @@ /** * 草稿箱文件编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱文件编辑") @PostMapping("/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterFile meterFile, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index e56ed95..f8d072c 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -90,9 +90,9 @@ } /** - * 草稿箱文件编辑 + * 草稿箱溯源供方编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱溯源供方编辑") @PostMapping("/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index afdfda8..d60d7f5 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -94,9 +94,9 @@ } /** - * 草稿箱文件编辑 + * 草稿箱计划编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱培训计划编辑") @PostMapping("/plan/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterTrainPlan trainPlan, BindingResult bindingResult) { diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java index 18ab69f..b9a25a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java @@ -138,7 +138,7 @@ String startUserId = execution.getVariable("root", String.class); assigneeList.add(startUserId); } else if (AssigneeSetTypeEnum.LEADER_TOP == settype) { - // 连续多级主管作为审批人,审批方式由多人审批时审批方式字段决定 + //连续多级主管作为审批人,审批方式由多人审批时审批方式字段决定 //根据发起人查部门,根据部门查主管角色,根据发起人部门查父部门,根据父部门查主管角色,递归 //多实例加签,解决手动加签的情况,这里是还未设置审批人,无需采用多实例加签的功能,增加到assigneeList即可 @@ -219,15 +219,21 @@ private JSONObject getNodeUserList(JSONObject nodeConfig, String taskId) { JSONObject childNode = nodeConfig.getJSONObject("childNode"); if (!Objects.isNull(childNode) && StringUtils.isNotEmpty(childNode.getString("id")) && taskId.equals(childNode.getString("id"))) { -// JSONArray nodeUserList = childNode.getJSONArray("nodeUserList"); -// if (!CollectionUtils.isEmpty(nodeUserList)) { -// return childNode; -// } -// return null; return childNode; } - if (!Objects.isNull(childNode)) { + if (!Objects.isNull(childNode) && Objects.isNull(childNode.getJSONArray("conditionNodes"))) { return getNodeUserList(childNode, taskId); + }else if(!Objects.isNull(childNode) && !Objects.isNull(childNode.getJSONArray("conditionNodes"))){ + //条件节点判断 + JSONArray conditionNodes = childNode.getJSONArray("conditionNodes"); + for (Object conditionNode : conditionNodes) { + JSONObject node = (JSONObject)conditionNode; + if(Objects.isNull(getNodeUserList(node, taskId))){ + continue; + } + //条件节点一定能匹配到任务审批人 + return getNodeUserList(node, taskId); + } } return null; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java index 9528373..cd1066f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java @@ -114,7 +114,12 @@ @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") private String taskId; - @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") - private String processInstanceId; +// @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") +// private String processInstanceId; + /** + * 可选决策项 + */ + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TraceSupplierApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TraceSupplierApprovalListResponse.java index b1048c1..bf75da4 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TraceSupplierApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TraceSupplierApprovalListResponse.java @@ -111,8 +111,8 @@ @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") private String taskId; - @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") - private String processInstanceId; +// @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") +// private String processInstanceId; /** * 可选决策项 diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java index 1ffae62..7327485 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java @@ -227,7 +227,7 @@ String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); childNode.put("childNode", null); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; for (int i = 0; i < incoming.size(); i++) { // TODO: 2022/12/5 此处用的connect第一个参数和并行网关的为何不一样 // TODO: 2022/12/5 为啥有后续节点这里却设置成了endExId @@ -274,7 +274,7 @@ // 1.0 先进行边连接, 暂存 nextNode String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; //其他条件分支和第一个条件分支连线的终点节点相同 for (int i = 0; i < incoming.size(); i++) { process.addFlowElement(connect(incoming.get(i), endExId, sequenceFlows)); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 7f8c1e7..5f4178b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -105,7 +105,7 @@ /** * 草稿箱文件编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱文件编辑") @PostMapping("/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterFile meterFile, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index e56ed95..f8d072c 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -90,9 +90,9 @@ } /** - * 草稿箱文件编辑 + * 草稿箱溯源供方编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱溯源供方编辑") @PostMapping("/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index afdfda8..d60d7f5 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -94,9 +94,9 @@ } /** - * 草稿箱文件编辑 + * 草稿箱计划编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱培训计划编辑") @PostMapping("/plan/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterTrainPlan trainPlan, BindingResult bindingResult) { diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java index 18ab69f..b9a25a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java @@ -138,7 +138,7 @@ String startUserId = execution.getVariable("root", String.class); assigneeList.add(startUserId); } else if (AssigneeSetTypeEnum.LEADER_TOP == settype) { - // 连续多级主管作为审批人,审批方式由多人审批时审批方式字段决定 + //连续多级主管作为审批人,审批方式由多人审批时审批方式字段决定 //根据发起人查部门,根据部门查主管角色,根据发起人部门查父部门,根据父部门查主管角色,递归 //多实例加签,解决手动加签的情况,这里是还未设置审批人,无需采用多实例加签的功能,增加到assigneeList即可 @@ -219,15 +219,21 @@ private JSONObject getNodeUserList(JSONObject nodeConfig, String taskId) { JSONObject childNode = nodeConfig.getJSONObject("childNode"); if (!Objects.isNull(childNode) && StringUtils.isNotEmpty(childNode.getString("id")) && taskId.equals(childNode.getString("id"))) { -// JSONArray nodeUserList = childNode.getJSONArray("nodeUserList"); -// if (!CollectionUtils.isEmpty(nodeUserList)) { -// return childNode; -// } -// return null; return childNode; } - if (!Objects.isNull(childNode)) { + if (!Objects.isNull(childNode) && Objects.isNull(childNode.getJSONArray("conditionNodes"))) { return getNodeUserList(childNode, taskId); + }else if(!Objects.isNull(childNode) && !Objects.isNull(childNode.getJSONArray("conditionNodes"))){ + //条件节点判断 + JSONArray conditionNodes = childNode.getJSONArray("conditionNodes"); + for (Object conditionNode : conditionNodes) { + JSONObject node = (JSONObject)conditionNode; + if(Objects.isNull(getNodeUserList(node, taskId))){ + continue; + } + //条件节点一定能匹配到任务审批人 + return getNodeUserList(node, taskId); + } } return null; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java index 9528373..cd1066f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java @@ -114,7 +114,12 @@ @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") private String taskId; - @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") - private String processInstanceId; +// @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") +// private String processInstanceId; + /** + * 可选决策项 + */ + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TraceSupplierApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TraceSupplierApprovalListResponse.java index b1048c1..bf75da4 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TraceSupplierApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TraceSupplierApprovalListResponse.java @@ -111,8 +111,8 @@ @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") private String taskId; - @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") - private String processInstanceId; +// @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") +// private String processInstanceId; /** * 可选决策项 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TrainPlanApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TrainPlanApprovalListResponse.java index 8893256..847993f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TrainPlanApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TrainPlanApprovalListResponse.java @@ -117,6 +117,12 @@ @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") private String taskId; - @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") - private String processInstanceId; +// @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") +// private String processInstanceId; + + /** + * 可选决策项 + */ + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java index 1ffae62..7327485 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java @@ -227,7 +227,7 @@ String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); childNode.put("childNode", null); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; for (int i = 0; i < incoming.size(); i++) { // TODO: 2022/12/5 此处用的connect第一个参数和并行网关的为何不一样 // TODO: 2022/12/5 为啥有后续节点这里却设置成了endExId @@ -274,7 +274,7 @@ // 1.0 先进行边连接, 暂存 nextNode String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; //其他条件分支和第一个条件分支连线的终点节点相同 for (int i = 0; i < incoming.size(); i++) { process.addFlowElement(connect(incoming.get(i), endExId, sequenceFlows)); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 7f8c1e7..5f4178b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -105,7 +105,7 @@ /** * 草稿箱文件编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱文件编辑") @PostMapping("/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterFile meterFile, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index e56ed95..f8d072c 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -90,9 +90,9 @@ } /** - * 草稿箱文件编辑 + * 草稿箱溯源供方编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱溯源供方编辑") @PostMapping("/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index afdfda8..d60d7f5 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -94,9 +94,9 @@ } /** - * 草稿箱文件编辑 + * 草稿箱计划编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱培训计划编辑") @PostMapping("/plan/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterTrainPlan trainPlan, BindingResult bindingResult) { diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java index 18ab69f..b9a25a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java @@ -138,7 +138,7 @@ String startUserId = execution.getVariable("root", String.class); assigneeList.add(startUserId); } else if (AssigneeSetTypeEnum.LEADER_TOP == settype) { - // 连续多级主管作为审批人,审批方式由多人审批时审批方式字段决定 + //连续多级主管作为审批人,审批方式由多人审批时审批方式字段决定 //根据发起人查部门,根据部门查主管角色,根据发起人部门查父部门,根据父部门查主管角色,递归 //多实例加签,解决手动加签的情况,这里是还未设置审批人,无需采用多实例加签的功能,增加到assigneeList即可 @@ -219,15 +219,21 @@ private JSONObject getNodeUserList(JSONObject nodeConfig, String taskId) { JSONObject childNode = nodeConfig.getJSONObject("childNode"); if (!Objects.isNull(childNode) && StringUtils.isNotEmpty(childNode.getString("id")) && taskId.equals(childNode.getString("id"))) { -// JSONArray nodeUserList = childNode.getJSONArray("nodeUserList"); -// if (!CollectionUtils.isEmpty(nodeUserList)) { -// return childNode; -// } -// return null; return childNode; } - if (!Objects.isNull(childNode)) { + if (!Objects.isNull(childNode) && Objects.isNull(childNode.getJSONArray("conditionNodes"))) { return getNodeUserList(childNode, taskId); + }else if(!Objects.isNull(childNode) && !Objects.isNull(childNode.getJSONArray("conditionNodes"))){ + //条件节点判断 + JSONArray conditionNodes = childNode.getJSONArray("conditionNodes"); + for (Object conditionNode : conditionNodes) { + JSONObject node = (JSONObject)conditionNode; + if(Objects.isNull(getNodeUserList(node, taskId))){ + continue; + } + //条件节点一定能匹配到任务审批人 + return getNodeUserList(node, taskId); + } } return null; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java index 9528373..cd1066f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java @@ -114,7 +114,12 @@ @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") private String taskId; - @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") - private String processInstanceId; +// @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") +// private String processInstanceId; + /** + * 可选决策项 + */ + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TraceSupplierApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TraceSupplierApprovalListResponse.java index b1048c1..bf75da4 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TraceSupplierApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TraceSupplierApprovalListResponse.java @@ -111,8 +111,8 @@ @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") private String taskId; - @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") - private String processInstanceId; +// @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") +// private String processInstanceId; /** * 可选决策项 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TrainPlanApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TrainPlanApprovalListResponse.java index 8893256..847993f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TrainPlanApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TrainPlanApprovalListResponse.java @@ -117,6 +117,12 @@ @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") private String taskId; - @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") - private String processInstanceId; +// @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") +// private String processInstanceId; + + /** + * 可选决策项 + */ + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTrainPlan.java b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTrainPlan.java index ae324f0..ffc21af 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTrainPlan.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTrainPlan.java @@ -146,7 +146,7 @@ private String remark; /** - * 流程定义id + * 流程实例id */ @ApiModelProperty(value = "流程实例id(未通过培训计划编辑接口必传参数)", dataType = "String") @TableField("process_id") diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java index 1ffae62..7327485 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java @@ -227,7 +227,7 @@ String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); childNode.put("childNode", null); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; for (int i = 0; i < incoming.size(); i++) { // TODO: 2022/12/5 此处用的connect第一个参数和并行网关的为何不一样 // TODO: 2022/12/5 为啥有后续节点这里却设置成了endExId @@ -274,7 +274,7 @@ // 1.0 先进行边连接, 暂存 nextNode String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; //其他条件分支和第一个条件分支连线的终点节点相同 for (int i = 0; i < incoming.size(); i++) { process.addFlowElement(connect(incoming.get(i), endExId, sequenceFlows)); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 7f8c1e7..5f4178b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -105,7 +105,7 @@ /** * 草稿箱文件编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱文件编辑") @PostMapping("/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterFile meterFile, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index e56ed95..f8d072c 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -90,9 +90,9 @@ } /** - * 草稿箱文件编辑 + * 草稿箱溯源供方编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱溯源供方编辑") @PostMapping("/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index afdfda8..d60d7f5 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -94,9 +94,9 @@ } /** - * 草稿箱文件编辑 + * 草稿箱计划编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱培训计划编辑") @PostMapping("/plan/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterTrainPlan trainPlan, BindingResult bindingResult) { diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java index 18ab69f..b9a25a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java @@ -138,7 +138,7 @@ String startUserId = execution.getVariable("root", String.class); assigneeList.add(startUserId); } else if (AssigneeSetTypeEnum.LEADER_TOP == settype) { - // 连续多级主管作为审批人,审批方式由多人审批时审批方式字段决定 + //连续多级主管作为审批人,审批方式由多人审批时审批方式字段决定 //根据发起人查部门,根据部门查主管角色,根据发起人部门查父部门,根据父部门查主管角色,递归 //多实例加签,解决手动加签的情况,这里是还未设置审批人,无需采用多实例加签的功能,增加到assigneeList即可 @@ -219,15 +219,21 @@ private JSONObject getNodeUserList(JSONObject nodeConfig, String taskId) { JSONObject childNode = nodeConfig.getJSONObject("childNode"); if (!Objects.isNull(childNode) && StringUtils.isNotEmpty(childNode.getString("id")) && taskId.equals(childNode.getString("id"))) { -// JSONArray nodeUserList = childNode.getJSONArray("nodeUserList"); -// if (!CollectionUtils.isEmpty(nodeUserList)) { -// return childNode; -// } -// return null; return childNode; } - if (!Objects.isNull(childNode)) { + if (!Objects.isNull(childNode) && Objects.isNull(childNode.getJSONArray("conditionNodes"))) { return getNodeUserList(childNode, taskId); + }else if(!Objects.isNull(childNode) && !Objects.isNull(childNode.getJSONArray("conditionNodes"))){ + //条件节点判断 + JSONArray conditionNodes = childNode.getJSONArray("conditionNodes"); + for (Object conditionNode : conditionNodes) { + JSONObject node = (JSONObject)conditionNode; + if(Objects.isNull(getNodeUserList(node, taskId))){ + continue; + } + //条件节点一定能匹配到任务审批人 + return getNodeUserList(node, taskId); + } } return null; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java index 9528373..cd1066f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java @@ -114,7 +114,12 @@ @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") private String taskId; - @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") - private String processInstanceId; +// @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") +// private String processInstanceId; + /** + * 可选决策项 + */ + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TraceSupplierApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TraceSupplierApprovalListResponse.java index b1048c1..bf75da4 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TraceSupplierApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TraceSupplierApprovalListResponse.java @@ -111,8 +111,8 @@ @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") private String taskId; - @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") - private String processInstanceId; +// @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") +// private String processInstanceId; /** * 可选决策项 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TrainPlanApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TrainPlanApprovalListResponse.java index 8893256..847993f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TrainPlanApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TrainPlanApprovalListResponse.java @@ -117,6 +117,12 @@ @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") private String taskId; - @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") - private String processInstanceId; +// @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") +// private String processInstanceId; + + /** + * 可选决策项 + */ + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTrainPlan.java b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTrainPlan.java index ae324f0..ffc21af 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTrainPlan.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTrainPlan.java @@ -146,7 +146,7 @@ private String remark; /** - * 流程定义id + * 流程实例id */ @ApiModelProperty(value = "流程实例id(未通过培训计划编辑接口必传参数)", dataType = "String") @TableField("process_id") diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterFileServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterFileServiceImpl.java index 2d1d4a7..c0e00ab 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterFileServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterFileServiceImpl.java @@ -247,6 +247,8 @@ toBeApprovedList.forEach(toBeApprovedDTO -> { if (String.valueOf(approval.getId()).equals(toBeApprovedDTO.getBusinessKey())) { approval.setTaskId(toBeApprovedDTO.getTaskId()); + //补全可选决策项 + approval.setDecisionItem(toBeApprovedDTO.getDecisionItem()); } }); }); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java index 1ffae62..7327485 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java @@ -227,7 +227,7 @@ String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); childNode.put("childNode", null); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; for (int i = 0; i < incoming.size(); i++) { // TODO: 2022/12/5 此处用的connect第一个参数和并行网关的为何不一样 // TODO: 2022/12/5 为啥有后续节点这里却设置成了endExId @@ -274,7 +274,7 @@ // 1.0 先进行边连接, 暂存 nextNode String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; //其他条件分支和第一个条件分支连线的终点节点相同 for (int i = 0; i < incoming.size(); i++) { process.addFlowElement(connect(incoming.get(i), endExId, sequenceFlows)); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 7f8c1e7..5f4178b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -105,7 +105,7 @@ /** * 草稿箱文件编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱文件编辑") @PostMapping("/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterFile meterFile, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index e56ed95..f8d072c 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -90,9 +90,9 @@ } /** - * 草稿箱文件编辑 + * 草稿箱溯源供方编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱溯源供方编辑") @PostMapping("/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index afdfda8..d60d7f5 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -94,9 +94,9 @@ } /** - * 草稿箱文件编辑 + * 草稿箱计划编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱培训计划编辑") @PostMapping("/plan/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterTrainPlan trainPlan, BindingResult bindingResult) { diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java index 18ab69f..b9a25a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java @@ -138,7 +138,7 @@ String startUserId = execution.getVariable("root", String.class); assigneeList.add(startUserId); } else if (AssigneeSetTypeEnum.LEADER_TOP == settype) { - // 连续多级主管作为审批人,审批方式由多人审批时审批方式字段决定 + //连续多级主管作为审批人,审批方式由多人审批时审批方式字段决定 //根据发起人查部门,根据部门查主管角色,根据发起人部门查父部门,根据父部门查主管角色,递归 //多实例加签,解决手动加签的情况,这里是还未设置审批人,无需采用多实例加签的功能,增加到assigneeList即可 @@ -219,15 +219,21 @@ private JSONObject getNodeUserList(JSONObject nodeConfig, String taskId) { JSONObject childNode = nodeConfig.getJSONObject("childNode"); if (!Objects.isNull(childNode) && StringUtils.isNotEmpty(childNode.getString("id")) && taskId.equals(childNode.getString("id"))) { -// JSONArray nodeUserList = childNode.getJSONArray("nodeUserList"); -// if (!CollectionUtils.isEmpty(nodeUserList)) { -// return childNode; -// } -// return null; return childNode; } - if (!Objects.isNull(childNode)) { + if (!Objects.isNull(childNode) && Objects.isNull(childNode.getJSONArray("conditionNodes"))) { return getNodeUserList(childNode, taskId); + }else if(!Objects.isNull(childNode) && !Objects.isNull(childNode.getJSONArray("conditionNodes"))){ + //条件节点判断 + JSONArray conditionNodes = childNode.getJSONArray("conditionNodes"); + for (Object conditionNode : conditionNodes) { + JSONObject node = (JSONObject)conditionNode; + if(Objects.isNull(getNodeUserList(node, taskId))){ + continue; + } + //条件节点一定能匹配到任务审批人 + return getNodeUserList(node, taskId); + } } return null; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java index 9528373..cd1066f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java @@ -114,7 +114,12 @@ @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") private String taskId; - @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") - private String processInstanceId; +// @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") +// private String processInstanceId; + /** + * 可选决策项 + */ + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TraceSupplierApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TraceSupplierApprovalListResponse.java index b1048c1..bf75da4 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TraceSupplierApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TraceSupplierApprovalListResponse.java @@ -111,8 +111,8 @@ @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") private String taskId; - @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") - private String processInstanceId; +// @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") +// private String processInstanceId; /** * 可选决策项 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TrainPlanApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TrainPlanApprovalListResponse.java index 8893256..847993f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TrainPlanApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TrainPlanApprovalListResponse.java @@ -117,6 +117,12 @@ @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") private String taskId; - @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") - private String processInstanceId; +// @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") +// private String processInstanceId; + + /** + * 可选决策项 + */ + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTrainPlan.java b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTrainPlan.java index ae324f0..ffc21af 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTrainPlan.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTrainPlan.java @@ -146,7 +146,7 @@ private String remark; /** - * 流程定义id + * 流程实例id */ @ApiModelProperty(value = "流程实例id(未通过培训计划编辑接口必传参数)", dataType = "String") @TableField("process_id") diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterFileServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterFileServiceImpl.java index 2d1d4a7..c0e00ab 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterFileServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterFileServiceImpl.java @@ -247,6 +247,8 @@ toBeApprovedList.forEach(toBeApprovedDTO -> { if (String.valueOf(approval.getId()).equals(toBeApprovedDTO.getBusinessKey())) { approval.setTaskId(toBeApprovedDTO.getTaskId()); + //补全可选决策项 + approval.setDecisionItem(toBeApprovedDTO.getDecisionItem()); } }); }); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTrainPlanServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTrainPlanServiceImpl.java index 35a7098..b9faa3d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTrainPlanServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTrainPlanServiceImpl.java @@ -290,6 +290,8 @@ toBeApprovedList.forEach(toBeApprovedDTO -> { if(String.valueOf(approval.getId()).equals(toBeApprovedDTO.getBusinessKey())){ approval.setTaskId(toBeApprovedDTO.getTaskId()); + //补全可选决策项 + approval.setDecisionItem(toBeApprovedDTO.getDecisionItem()); } }); }); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java index 1ffae62..7327485 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/flowable/JsonToBpmnController.java @@ -227,7 +227,7 @@ String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); childNode.put("childNode", null); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; for (int i = 0; i < incoming.size(); i++) { // TODO: 2022/12/5 此处用的connect第一个参数和并行网关的为何不一样 // TODO: 2022/12/5 为啥有后续节点这里却设置成了endExId @@ -274,7 +274,7 @@ // 1.0 先进行边连接, 暂存 nextNode String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; //其他条件分支和第一个条件分支连线的终点节点相同 for (int i = 0; i < incoming.size(); i++) { process.addFlowElement(connect(incoming.get(i), endExId, sequenceFlows)); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 7f8c1e7..5f4178b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -105,7 +105,7 @@ /** * 草稿箱文件编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱文件编辑") @PostMapping("/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterFile meterFile, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index e56ed95..f8d072c 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -90,9 +90,9 @@ } /** - * 草稿箱文件编辑 + * 草稿箱溯源供方编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱溯源供方编辑") @PostMapping("/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterTraceSupplier traceSupplier, BindingResult bindingResult) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index afdfda8..d60d7f5 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -94,9 +94,9 @@ } /** - * 草稿箱文件编辑 + * 草稿箱计划编辑 */ - @ApiOperation("草稿箱文件更新") + @ApiOperation("草稿箱培训计划编辑") @PostMapping("/plan/draftUpdate") @ResponseBody public ReturnDTO draftUpdate(@RequestBody @Valid MeterTrainPlan trainPlan, BindingResult bindingResult) { diff --git a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java index 18ab69f..b9a25a7 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/listeners/flowable/CounterSignListener.java @@ -138,7 +138,7 @@ String startUserId = execution.getVariable("root", String.class); assigneeList.add(startUserId); } else if (AssigneeSetTypeEnum.LEADER_TOP == settype) { - // 连续多级主管作为审批人,审批方式由多人审批时审批方式字段决定 + //连续多级主管作为审批人,审批方式由多人审批时审批方式字段决定 //根据发起人查部门,根据部门查主管角色,根据发起人部门查父部门,根据父部门查主管角色,递归 //多实例加签,解决手动加签的情况,这里是还未设置审批人,无需采用多实例加签的功能,增加到assigneeList即可 @@ -219,15 +219,21 @@ private JSONObject getNodeUserList(JSONObject nodeConfig, String taskId) { JSONObject childNode = nodeConfig.getJSONObject("childNode"); if (!Objects.isNull(childNode) && StringUtils.isNotEmpty(childNode.getString("id")) && taskId.equals(childNode.getString("id"))) { -// JSONArray nodeUserList = childNode.getJSONArray("nodeUserList"); -// if (!CollectionUtils.isEmpty(nodeUserList)) { -// return childNode; -// } -// return null; return childNode; } - if (!Objects.isNull(childNode)) { + if (!Objects.isNull(childNode) && Objects.isNull(childNode.getJSONArray("conditionNodes"))) { return getNodeUserList(childNode, taskId); + }else if(!Objects.isNull(childNode) && !Objects.isNull(childNode.getJSONArray("conditionNodes"))){ + //条件节点判断 + JSONArray conditionNodes = childNode.getJSONArray("conditionNodes"); + for (Object conditionNode : conditionNodes) { + JSONObject node = (JSONObject)conditionNode; + if(Objects.isNull(getNodeUserList(node, taskId))){ + continue; + } + //条件节点一定能匹配到任务审批人 + return getNodeUserList(node, taskId); + } } return null; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java index 9528373..cd1066f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/FileApprovalListResponse.java @@ -114,7 +114,12 @@ @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") private String taskId; - @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") - private String processInstanceId; +// @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") +// private String processInstanceId; + /** + * 可选决策项 + */ + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TraceSupplierApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TraceSupplierApprovalListResponse.java index b1048c1..bf75da4 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TraceSupplierApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TraceSupplierApprovalListResponse.java @@ -111,8 +111,8 @@ @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") private String taskId; - @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") - private String processInstanceId; +// @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") +// private String processInstanceId; /** * 可选决策项 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TrainPlanApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TrainPlanApprovalListResponse.java index 8893256..847993f 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TrainPlanApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/TrainPlanApprovalListResponse.java @@ -117,6 +117,12 @@ @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") private String taskId; - @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") - private String processInstanceId; +// @ApiModelProperty(value = "流程实例id(取消操作使用)", dataType = "String") +// private String processInstanceId; + + /** + * 可选决策项 + */ + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTrainPlan.java b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTrainPlan.java index ae324f0..ffc21af 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTrainPlan.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTrainPlan.java @@ -146,7 +146,7 @@ private String remark; /** - * 流程定义id + * 流程实例id */ @ApiModelProperty(value = "流程实例id(未通过培训计划编辑接口必传参数)", dataType = "String") @TableField("process_id") diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterFileServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterFileServiceImpl.java index 2d1d4a7..c0e00ab 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterFileServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterFileServiceImpl.java @@ -247,6 +247,8 @@ toBeApprovedList.forEach(toBeApprovedDTO -> { if (String.valueOf(approval.getId()).equals(toBeApprovedDTO.getBusinessKey())) { approval.setTaskId(toBeApprovedDTO.getTaskId()); + //补全可选决策项 + approval.setDecisionItem(toBeApprovedDTO.getDecisionItem()); } }); }); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTrainPlanServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTrainPlanServiceImpl.java index 35a7098..b9faa3d 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTrainPlanServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTrainPlanServiceImpl.java @@ -290,6 +290,8 @@ toBeApprovedList.forEach(toBeApprovedDTO -> { if(String.valueOf(approval.getId()).equals(toBeApprovedDTO.getBusinessKey())){ approval.setTaskId(toBeApprovedDTO.getTaskId()); + //补全可选决策项 + approval.setDecisionItem(toBeApprovedDTO.getDecisionItem()); } }); }); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/system/FlowDefDefServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/system/FlowDefDefServiceImpl.java index 7aee13e..660be28 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/system/FlowDefDefServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/system/FlowDefDefServiceImpl.java @@ -335,7 +335,6 @@ //添加incoming属性(表示进来的,即上面流程节点的id列表),值为仅一个启动事件id的列表 flowNode.put("incoming", Collections.singletonList(fromId)); String id = createTask(flowNode, process, sequenceFlows); - // 如果当前任务还有后续任务,则遍历创建后续任务 JSONObject nextNode = flowNode.getJSONObject("childNode"); if (Objects.nonNull(nextNode)) { @@ -349,7 +348,6 @@ else if (Type.CC.type.equals(nodeType)) { flowNode.put("incoming", Collections.singletonList(fromId)); String id = createServiceTask(flowNode, process, sequenceFlows); - // 如果当前任务还有后续任务,则遍历创建后续任务 JSONObject nextNode = flowNode.getJSONObject("childNode"); if (Objects.nonNull(nextNode)) { @@ -363,7 +361,6 @@ else if (Type.USER_TASK.type.equals(nodeType)) { flowNode.put("incoming", Collections.singletonList(fromId)); String id = createTask(flowNode, process, sequenceFlows); - // 如果当前任务还有后续任务,则遍历创建后续任务 JSONObject nextNode = flowNode.getJSONObject("childNode"); if (Objects.nonNull(nextNode)) { @@ -454,11 +451,16 @@ } } String str = StringUtils.join(userIds, ","); - // todo: 以下需验证,若不行,采用:流程实例的发起人通过TaskCreatedListener监听器设置,这里再获取,或者可能需要再加个监听器获取 + // 以下已测试成功 // ExUtils为bean实例方法,已添加 // flowable表达式会自动识别流程变量,以下root也可识别为实例创建时的具体值,比如:${price < 100},price就是一个流程变量的值,UEL表达式的结果为布尔值 String starterId = "root"; - expression = "exUtils." + "strContains(" + starterId + "," + str + ")"; + if(StringUtils.isEmpty(str)){ + //其他条件(最后一个分支为空条件的情况) + expression = "#{exUtils." + "strContains(" + starterId + "," + starterId + ")}"; + }else { + expression = "#{exUtils." + "strContains(" + starterId + "," + str + ")}"; + } } if (Objects.isNull(childNode)) { @@ -509,7 +511,7 @@ String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); childNode.put("childNode", null); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; for (int i = 0; i < incoming.size(); i++) { // TODO: 2022/12/5 此处用的connect第一个参数和并行网关的为啥不一样 // TODO: 2022/12/5 为啥有后续节点这里却设置成了endExId @@ -556,12 +558,11 @@ // 1.0 先进行边连接, 暂存 nextNode String endExId = id("exclusiveGateway") + "end"; process.addFlowElement(createExclusiveGateWayEnd(endExId)); - String identifier = endExId;/*create(flowElement.getId(), childNode,model,process,sequenceFlows);*/ + String identifier = endExId; //其他条件分支和第一个条件分支连线的终点节点相同 for (int i = 0; i < incoming.size(); i++) { process.addFlowElement(connect(incoming.get(i), endExId, sequenceFlows)); } - // 针对 gateway 空任务分支 添加条件表达式,即条件节点下无子节点的情况 if (!conditions.isEmpty()) { FlowElement flowElement1 = model.getFlowElement(identifier); @@ -582,7 +583,6 @@ if (Objects.isNull(sequenceFlow.getConditionExpression()) && StringUtils.isNotBlank(expression)) { sequenceFlow.setConditionExpression(expression); } - conditions.remove(0); } }); @@ -590,7 +590,6 @@ } return endExId; } -// return exclusiveGatewayId; } /** @@ -685,8 +684,10 @@ } private static String createTask(JSONObject flowNode, Process process, List sequenceFlows) { - // TODO: 2022/12/4 getJSONArray判空 - List incoming = flowNode.getJSONArray("incoming").toJavaList(String.class); + List incoming = null; + if(!Objects.isNull(flowNode.getJSONArray("incoming"))){ + incoming = flowNode.getJSONArray("incoming").toJavaList(String.class); + } String id = ""; if (incoming != null && !incoming.isEmpty()) { UserTask userTask = new UserTask(); @@ -758,25 +759,15 @@ } private enum Type { - //0 发起人 1审批 2抄送 3条件 4路由 + //0 发起人 1审批任务 2抄送任务 4条件路由 5并行网关 ROOT(0, UserTask.class), + USER_TASK(1, UserTask.class), + CC(2, ServiceTask.class), ROUTER(4, ExclusiveGateway.class), PARALLEL(5, ParallelGateway.class), - - /** - * 排他事件 - */ -// EXCLUSIVE(4, ExclusiveGateway.class), - - /** - * 任务 - */ - SERVER_TASK(6, UserTask.class), - USER_TASK(1, UserTask.class), - CC(2, ServiceTask.class); + SERVER_TASK(6, UserTask.class); private Integer type; - private Class typeClass; Type(Integer type, Class typeClass) { @@ -795,7 +786,6 @@ public boolean isEqual(String type) { return this.type.equals(type); } - }