rev:流程节点完成
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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<Object> 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<Object> 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);
|
||||
}
|
||||
|
||||
@@ -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"));
|
||||
|
||||
@@ -66,6 +66,7 @@ public abstract class FlowNodeActivityBehavior<T> {
|
||||
.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());
|
||||
|
||||
@@ -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<JSONObject> {
|
||||
|
||||
@Autowired
|
||||
private IActReProcdefService reProcdefService;
|
||||
@@ -41,12 +44,18 @@ public class EndEventActivityBehavior extends FlowNodeActivityBehavior {
|
||||
|
||||
|
||||
@Override
|
||||
public void execute(ExecutionEntity entity) {
|
||||
public void execute(ExecutionEntity<JSONObject> entity) {
|
||||
//流程结束:判断是否是子流程,是的话调用父流程
|
||||
iActRuExecutionService.update(new UpdateWrapper<ActRuExecution>()
|
||||
.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());
|
||||
|
||||
@@ -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<JSONObject> {
|
||||
@Autowired
|
||||
IBmFormStrucService iBmFormStrucService;
|
||||
private IBmFormStrucService iBmFormStrucService;
|
||||
//分配明细用公用表
|
||||
@Autowired
|
||||
IPmFormDataService iPmFormDataService;
|
||||
private IPmFormDataService iPmFormDataService;
|
||||
@Autowired
|
||||
private IActHiExecutionService actHiExecutionService;
|
||||
|
||||
@Override
|
||||
public void execute(ExecutionEntity<JSONObject> entity) {
|
||||
@@ -53,14 +59,22 @@ public class StrucFormActivityBehavior extends FlowNodeActivityBehavior<JSONObje
|
||||
}
|
||||
//TEST:这部分数据放在框架中,每个节点都需要
|
||||
entity.setForm_struc(targetStruc);
|
||||
|
||||
//怕断是否指定数据源:
|
||||
String source_data = currentNode.getSource_data();
|
||||
JSONObject sourceData = entity.getT();
|
||||
if (StringUtils.isNotEmpty(source_data)){
|
||||
ActHiExecution one = actHiExecutionService.getOne(new QueryWrapper<ActHiExecution>()
|
||||
.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<JSONObject,JSONObject> 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);
|
||||
|
||||
//该参数里包含三部分:主数据基础字段,组数据自定义及明细,
|
||||
//明细:基础字段,组数据自定义及参数:
|
||||
|
||||
@@ -17,6 +17,11 @@ public class StrucForm extends ExecuteTask {
|
||||
* 表单类型
|
||||
*/
|
||||
private String form_type;
|
||||
|
||||
/**
|
||||
* 指定数据来源:从节点中获取
|
||||
*/
|
||||
private String source_data;
|
||||
/**
|
||||
* 表单处理类别
|
||||
*/
|
||||
|
||||
@@ -35,8 +35,14 @@ public class ClassHandler extends TypeHandler<JSONObject,ExecutionEntity<JSONOb
|
||||
JSONObject form = process.process(dto.getT(), flowNode.getAuxParam());
|
||||
result.put("t",form);
|
||||
//后续:涉及框架的参数提到框架中处理
|
||||
result.put("source_form_id",dto.getForm_id());
|
||||
result.put("source_form_type",dto.getForm_type());
|
||||
String source_form_type = dto.getForm_type();
|
||||
String source_form_id = dto.getForm_id();
|
||||
if (dto.getForm_type().equals(flowNode.getForm_type())){
|
||||
source_form_type = dto.getSource_form_type();
|
||||
source_form_id = dto.getSource_form_id();
|
||||
}
|
||||
result.put("source_form_id",source_form_id);
|
||||
result.put("source_form_type",source_form_type);
|
||||
result.put("form_id",form.getString("id"));
|
||||
result.put("form_type",flowNode.getForm_type());
|
||||
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
package org.nl.wms.flow_manage.event;
|
||||
package org.nl.wms.flow_manage.monitor;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.publish.AbstraceListener;
|
||||
import org.nl.wms.flow_manage.flow.service.execution.IFlowOperationService;
|
||||
import org.nl.wms.flow_manage.monitor.event.FlowStartEvent;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
package org.nl.wms.flow_manage.monitor.event;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import org.nl.common.domain.exception.BadRequestException;
|
||||
import org.nl.common.publish.event.PublishEvent;
|
||||
import org.nl.wms.flow_manage.flow.framework.entity.ExecutionDto;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2024/5/17 15:02
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
public class FlowEndEvent extends PublishEvent {
|
||||
//数据传输
|
||||
private ExecutionDto dto;
|
||||
|
||||
private String form_type;
|
||||
|
||||
private String form_id;
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package org.nl.wms.flow_manage.event;
|
||||
package org.nl.wms.flow_manage.monitor.event;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.common.domain.exception.BadRequestException;
|
||||
@@ -15,7 +15,7 @@ import org.nl.common.utils.MapOf;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.base_manage.vehicle.vehicleMater.service.IMdPbVehicleMaterService;
|
||||
import org.nl.wms.base_manage.vehicle.vehicleMater.service.dao.MdPbVehicleMater;
|
||||
import org.nl.wms.flow_manage.event.FlowStartEvent;
|
||||
import org.nl.wms.flow_manage.monitor.event.FlowStartEvent;
|
||||
import org.nl.wms.md_manage.group_dick.service.IMdGruopDtlService;
|
||||
import org.nl.wms.md_manage.group_dick.service.dao.MdGruopDick;
|
||||
import org.nl.wms.md_manage.group_dick.service.dao.MdGruopDtl;
|
||||
@@ -23,9 +23,7 @@ import org.nl.wms.md_manage.group_dick.service.dao.mapper.MdGruopDickMapper;
|
||||
import org.nl.wms.md_manage.group_dick.service.IMdGruopDickService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.nl.wms.md_manage.group_dick.service.dto.GroupDickQuery;
|
||||
import org.nl.wms.md_manage.group_dick.service.dto.MdGruopDtlDto;
|
||||
import org.nl.wms.md_manage.group_dick.service.dto.MdGruopDtlVo;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -39,7 +37,6 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
|
||||
@@ -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<FlowEndEvent> {
|
||||
|
||||
@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<StIvtIostorinvIn>()
|
||||
.set("status", StatusEnum.FORM_STATUS.code("完成"))
|
||||
.set("update_time", DateUtil.now()).eq("id",form_id));
|
||||
}
|
||||
return "";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user