From ece2d61c3ac10431608bd1331c1bf2dcb0c25d75 Mon Sep 17 00:00:00 2001 From: zhangzq Date: Thu, 23 May 2024 17:36:11 +0800 Subject: [PATCH] =?UTF-8?q?rev:=E6=B5=81=E7=A8=8B=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../task/handler/impl/TaskStatusHandler.java | 6 +-- .../model/ActDeModelController.java | 23 +++++++++- .../node/impl/StrucFormConverter.java | 1 + .../behavior/FlowNodeActivityBehavior.java | 1 + .../impl/EndEventActivityBehavior.java | 14 +++++- .../impl/StrucFormActivityBehavior.java | 22 +++++++-- .../entity/node/impl/task/impl/StrucForm.java | 5 ++ .../nodeType/excess/impl/ClassHandler.java | 10 +++- .../{event => monitor}/FlowEventListener.java | 3 +- .../monitor/event/FlowEndEvent.java | 29 ++++++++++++ .../{ => monitor}/event/FlowStartEvent.java | 2 +- .../service/impl/MdGruopDickServiceImpl.java | 5 +- .../listener/FlowEndEventListener.java | 46 +++++++++++++++++++ 13 files changed, 147 insertions(+), 20 deletions(-) rename wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/{event => monitor}/FlowEventListener.java (88%) create mode 100644 wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/monitor/event/FlowEndEvent.java rename wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/{ => monitor}/event/FlowStartEvent.java (97%) create mode 100644 wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/monitor/listener/FlowEndEventListener.java diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/TaskStatusHandler.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/TaskStatusHandler.java index 3375be44..97f58866 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/TaskStatusHandler.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/dispatch_manage/task/handler/impl/TaskStatusHandler.java @@ -3,7 +3,6 @@ package org.nl.wms.dispatch_manage.task.handler.impl; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import org.nl.common.enums.StatusEnum; import org.nl.common.publish.BussEventMulticaster; import org.nl.common.utils.SecurityUtils; @@ -13,13 +12,10 @@ import org.nl.wms.dispatch_manage.task.handler.StructEvent; import org.nl.wms.dispatch_manage.task.handler.TaskHandler; import org.nl.wms.dispatch_manage.task.service.ISchBaseTaskService; import org.nl.wms.dispatch_manage.task.service.dao.SchBaseTask; -import org.nl.wms.flow_manage.event.FlowStartEvent; -import org.nl.wms.md_manage.group_dick.service.dao.MdGruopDick; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; -import java.util.function.Consumer; /* * @author ZZQ @@ -38,7 +34,7 @@ public class TaskStatusHandler implements TaskHandler { public JSONObject process(JSONObject from, JSONObject param) { //暂时出入入库的问题 from.put("task_status",param.getString("task_status")); - from.put("update_time","DateUtil.now()"); + from.put("update_time",DateUtil.now()); from.put("update_name",SecurityUtils.getCurrentNickName()); SchBaseTask schBaseTask = from.toJavaObject(SchBaseTask.class); schBaseTaskService.updateById(schBaseTask); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/controller/model/ActDeModelController.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/controller/model/ActDeModelController.java index a90535cd..4c1b9cb9 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/controller/model/ActDeModelController.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/controller/model/ActDeModelController.java @@ -3,11 +3,16 @@ package org.nl.wms.flow_manage.flow.controller.model; import cn.dev33.satoken.annotation.SaIgnore; import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; import org.nl.common.TableDataInfo; import org.nl.common.domain.entity.PageQuery; +import org.nl.common.domain.exception.BadRequestException; +import org.nl.common.enums.StatusEnum; import org.nl.common.utils.FileUtil; import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; +import org.nl.wms.flow_manage.flow.framework.BpmnModel; +import org.nl.wms.flow_manage.flow.framework.converter.BpmnJSONConverter; import org.nl.wms.flow_manage.flow.framework.engine.cmd.CommandExecutor; import org.nl.wms.flow_manage.flow.framework.engine.cmd.unify.impl.StartInstanceCmd; import org.nl.wms.flow_manage.flow.framework.entity.ExecutionEntity; @@ -51,6 +56,8 @@ public class ActDeModelController { private IActReProcdefService reProcdefService; @Autowired private CommandExecutor commandExecutor; + @Autowired + private BpmnJSONConverter bpmnJSONConverter; @GetMapping public ResponseEntity getAll(ModelQuery query, PageQuery page) { @@ -63,15 +70,29 @@ public class ActDeModelController { dto.setCreate_time(DateUtil.now()); dto.setId(IdUtil.getStringId()); dto.setModel_key(IdUtil.getStringId()); + try { + JSONObject modelJson = JSONObject.parseObject(dto.getModel_editor_json()); + BpmnModel bpmnModel = bpmnJSONConverter.convertToBpmnModel(dto.getModel_key(),"null", modelJson); + }catch (Exception ex){ + ex.printStackTrace(); + throw new BadRequestException("模型配置不正确:"+ex.getMessage()); + } modelService.save(dto); return new ResponseEntity<>(HttpStatus.OK); } @PutMapping public ResponseEntity update(@Validated @RequestBody ActDeModel dto) { - dto.setStatus("30"); + dto.setStatus(StatusEnum.MODEL_STATUS.code("未发布")); dto.setUpdated_id(SecurityUtils.getCurrentUserId()); dto.setUpdate_time(DateUtil.now()); + try { + JSONObject modelJson = JSONObject.parseObject(dto.getModel_editor_json()); + BpmnModel bpmnModel = bpmnJSONConverter.convertToBpmnModel(dto.getModel_key(),"null", modelJson); + }catch (Exception ex){ + ex.printStackTrace(); + throw new BadRequestException("模型配置不正确:"+ex.getMessage()); + } modelService.updateById(dto); return new ResponseEntity<>(HttpStatus.OK); } diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/converter/node/impl/StrucFormConverter.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/converter/node/impl/StrucFormConverter.java index 31255c1c..87c8be0b 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/converter/node/impl/StrucFormConverter.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/converter/node/impl/StrucFormConverter.java @@ -25,6 +25,7 @@ public class StrucFormConverter extends BaseNodeConverter { form.setId(node.getString("id")); form.setType(node.getString("type")); form.setForm_type(properties.getString("form_type")); + form.setSource_data(properties.getString("sourceData")); form.setName(properties.getString("name")); form.setCategory(properties.getString("category")); form.setDocumentation(properties.getString("documentation")); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/FlowNodeActivityBehavior.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/FlowNodeActivityBehavior.java index 8abe0678..2dd0308e 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/FlowNodeActivityBehavior.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/FlowNodeActivityBehavior.java @@ -66,6 +66,7 @@ public abstract class FlowNodeActivityBehavior { .set("form_type",entity.getForm_type()) .set("update_time", DateUtil.now())); this.leaveActivity(entity); + // }catch (Exception ex){ ex.printStackTrace(); log.error(entity.getActivityName()+"流程执行异常:{}",ex.getMessage()); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/EndEventActivityBehavior.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/EndEventActivityBehavior.java index 2dfd905f..05837f0b 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/EndEventActivityBehavior.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/EndEventActivityBehavior.java @@ -9,16 +9,19 @@ import lombok.SneakyThrows; import org.apache.commons.lang3.StringUtils; import org.nl.common.domain.exception.BadRequestException; import org.nl.common.enums.StatusEnum; +import org.nl.common.publish.BussEventMulticaster; import org.nl.common.utils.IdUtil; import org.nl.wms.flow_manage.flow.framework.BpmnModel; import org.nl.wms.flow_manage.flow.framework.converter.BpmnJSONConverter; import org.nl.wms.flow_manage.flow.framework.engine.behavior.FlowNodeActivityBehavior; import org.nl.wms.flow_manage.flow.framework.engine.cmd.CommandExecutor; +import org.nl.wms.flow_manage.flow.framework.entity.ExecutionDto; import org.nl.wms.flow_manage.flow.framework.entity.ExecutionEntity; import org.nl.wms.flow_manage.flow.framework.entity.node.base.impl.FlowNode; import org.nl.wms.flow_manage.flow.service.deployment.IActReProcdefService; import org.nl.wms.flow_manage.flow.service.deployment.dao.ActReProcdef; import org.nl.wms.flow_manage.flow.service.execution.dao.ActRuExecution; +import org.nl.wms.flow_manage.monitor.event.FlowEndEvent; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -30,7 +33,7 @@ import java.util.concurrent.CountDownLatch; * 源:UserTask */ @Service("endEvent") -public class EndEventActivityBehavior extends FlowNodeActivityBehavior { +public class EndEventActivityBehavior extends FlowNodeActivityBehavior { @Autowired private IActReProcdefService reProcdefService; @@ -41,12 +44,18 @@ public class EndEventActivityBehavior extends FlowNodeActivityBehavior { @Override - public void execute(ExecutionEntity entity) { + public void execute(ExecutionEntity entity) { //流程结束:判断是否是子流程,是的话调用父流程 iActRuExecutionService.update(new UpdateWrapper() .eq("proc_inst_id",entity.getProc_inst_id()) .set("status", StatusEnum.FLOW_STATUS.code("完成"))); + JSONObject data = entity.getT(); + ExecutionDto executionDto = data.toJavaObject(ExecutionDto.class); + //后续监听器通过流程中监听事件配置 + BussEventMulticaster.Publish(FlowEndEvent.builder().dto(executionDto) + .form_type(entity.getForm_type()) + .form_id(entity.getForm_id()).build()); } @Override @@ -72,6 +81,7 @@ public class EndEventActivityBehavior extends FlowNodeActivityBehavior { FlowNode flowNode = bpmnModel.getProcesses().get(current); //通过该标识触发 flowNode.setPassNode(Boolean.TRUE); + entity.setT(parent.getForm_data()); entity.setCurrentFlowElement(flowNode); entity.setProc_inst_id(parent.getProc_inst_id()); entity.setParent_id(parent.getParent_id()); diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/StrucFormActivityBehavior.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/StrucFormActivityBehavior.java index b7ff88cf..b2a95e0e 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/StrucFormActivityBehavior.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/engine/behavior/impl/StrucFormActivityBehavior.java @@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.commons.lang3.StringUtils; import org.nl.common.domain.exception.BadRequestException; import org.nl.common.enums.StatusEnum; import org.nl.common.utils.CodeUtil; @@ -16,6 +17,8 @@ import org.nl.wms.flow_manage.flow.framework.entity.ExecutionEntity; import org.nl.wms.flow_manage.flow.framework.entity.node.base.impl.FlowElement; import org.nl.wms.flow_manage.flow.framework.entity.node.impl.task.impl.StrucForm; import org.nl.wms.flow_manage.flow.framework.process.nodeType.TypeHandler; +import org.nl.wms.flow_manage.flow.service.history.IActHiExecutionService; +import org.nl.wms.flow_manage.flow.service.history.dao.ActHiExecution; import org.nl.wms.pm_manage.form_data.service.IPmFormDataService; import org.nl.wms.pm_manage.form_data.service.dao.PmFormData; import org.springframework.beans.factory.annotation.Autowired; @@ -29,14 +32,17 @@ import org.springframework.stereotype.Service; 获取表单配置表 确认有没有自定义字段:如果有则创建自定义字段 生成出入库单单据 + * 流程执行到后面之后需要拿到回执单对应的原始数据 */ @Service("strucForm") public class StrucFormActivityBehavior extends FlowNodeActivityBehavior { @Autowired - IBmFormStrucService iBmFormStrucService; + private IBmFormStrucService iBmFormStrucService; //分配明细用公用表 @Autowired - IPmFormDataService iPmFormDataService; + private IPmFormDataService iPmFormDataService; + @Autowired + private IActHiExecutionService actHiExecutionService; @Override public void execute(ExecutionEntity entity) { @@ -53,14 +59,22 @@ public class StrucFormActivityBehavior extends FlowNodeActivityBehavior() + .eq("activity_id", source_data) + .eq("proc_inst_id", entity.getProc_inst_id())); + sourceData = one.getForm_data(); + } //处理自定义参数: if (currentNode.getSkipExpression()!=null || currentNode.getSkipExpression().size()>0){ TypeHandler typeHandler = TypeHandler.HANDLER_MAP.get(currentNode.getCategory()); if (typeHandler==null){ throw new BadRequestException("【flow】当前节点处理类型未定义"); } - JSONObject handler = typeHandler.handler(currentNode.getSkipExpression(), entity.getT(), targetStruc); + JSONObject handler = typeHandler.handler(currentNode.getSkipExpression(), sourceData, targetStruc); //该参数里包含三部分:主数据基础字段,组数据自定义及明细, //明细:基础字段,组数据自定义及参数: diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/entity/node/impl/task/impl/StrucForm.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/entity/node/impl/task/impl/StrucForm.java index 62c14a12..2db14d6a 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/entity/node/impl/task/impl/StrucForm.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/entity/node/impl/task/impl/StrucForm.java @@ -17,6 +17,11 @@ public class StrucForm extends ExecuteTask { * 表单类型 */ private String form_type; + + /** + * 指定数据来源:从节点中获取 + */ + private String source_data; /** * 表单处理类别 */ diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/nodeType/excess/impl/ClassHandler.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/nodeType/excess/impl/ClassHandler.java index 63d9f5c2..0481263c 100644 --- a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/nodeType/excess/impl/ClassHandler.java +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/flow_manage/flow/framework/process/nodeType/excess/impl/ClassHandler.java @@ -35,8 +35,14 @@ public class ClassHandler extends TypeHandler diff --git a/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/monitor/listener/FlowEndEventListener.java b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/monitor/listener/FlowEndEventListener.java new file mode 100644 index 00000000..bf2ed99c --- /dev/null +++ b/wms_pro/hd/nladmin-system/src/main/java/org/nl/wms/stor_manage/monitor/listener/FlowEndEventListener.java @@ -0,0 +1,46 @@ +package org.nl.wms.stor_manage.monitor.listener; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.nl.common.domain.exception.BadRequestException; +import org.nl.common.enums.StatusEnum; +import org.nl.common.publish.AbstraceListener; +import org.nl.wms.flow_manage.flow.framework.entity.ExecutionDto; +import org.nl.wms.flow_manage.flow.service.execution.IFlowOperationService; +import org.nl.wms.flow_manage.monitor.event.FlowEndEvent; +import org.nl.wms.flow_manage.monitor.event.FlowStartEvent; +import org.nl.wms.stor_manage.io.service.in.iostor.IStIvtIostorinvInService; +import org.nl.wms.stor_manage.io.service.in.iostor.dao.StIvtIostorinvIn; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/* + * @author ZZQ + * @Date 2024/5/17 15:27 + */ +@Component +@Slf4j +public class FlowEndEventListener extends AbstraceListener { + + @Autowired + private IStIvtIostorinvInService iStIvtIostorinvInService; + + @Override + protected String doEvent(FlowEndEvent event) { + ExecutionDto dto = event.getDto(); + String form_type = dto.getForm_type(); + String form_id = dto.getForm_id(); + if (StringUtils.isEmpty(form_type)){ + throw new BadRequestException("当前结束流程数据异常"); + } + if (form_type.equals("st_ivt_iostorinv_in")){ + iStIvtIostorinvInService.update(new UpdateWrapper() + .set("status", StatusEnum.FORM_STATUS.code("完成")) + .set("update_time", DateUtil.now()).eq("id",form_id)); + } + return ""; + } +}