新增采购单
This commit is contained in:
parent
297202ffde
commit
ba7efd1e01
|
@ -1,5 +1,6 @@
|
||||||
package com.snow.web.controller.flowable;
|
package com.snow.web.controller.flowable;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
import com.snow.common.annotation.Log;
|
import com.snow.common.annotation.Log;
|
||||||
import com.snow.common.core.controller.BaseController;
|
import com.snow.common.core.controller.BaseController;
|
||||||
import com.snow.common.core.domain.AjaxResult;
|
import com.snow.common.core.domain.AjaxResult;
|
||||||
|
@ -59,6 +60,7 @@ public class ActDeModelController extends BaseController
|
||||||
public TableDataInfo list(ActDeModel actDeModel)
|
public TableDataInfo list(ActDeModel actDeModel)
|
||||||
{
|
{
|
||||||
startPage();
|
startPage();
|
||||||
|
actDeModel.setModelTypeList(Lists.newArrayList(ActDeModel.MODEL_TYPE_BPMN,ActDeModel.MODEL_TYPE_DECISION_TABLE));
|
||||||
List<ActDeModel> list = actDeModelService.selectActDeModelList(actDeModel);
|
List<ActDeModel> list = actDeModelService.selectActDeModelList(actDeModel);
|
||||||
return getDataTable(list);
|
return getDataTable(list);
|
||||||
}
|
}
|
||||||
|
@ -155,10 +157,10 @@ public class ActDeModelController extends BaseController
|
||||||
@RequiresPermissions("system:model:deployment")
|
@RequiresPermissions("system:model:deployment")
|
||||||
@PostMapping("/deployment")
|
@PostMapping("/deployment")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public AjaxResult deployment(String id)
|
public AjaxResult deployment(String id,Integer type)
|
||||||
{
|
{
|
||||||
Deployment Deployment = flowablePublishServiceImpl.createBytesDeploymentByModelId(id);
|
String deploymentId = flowablePublishServiceImpl.deploymentByModelId(id, type);
|
||||||
if(Deployment==null){
|
if(deploymentId==null){
|
||||||
return AjaxResult.error("modelId不存在");
|
return AjaxResult.error("modelId不存在");
|
||||||
}
|
}
|
||||||
return AjaxResult.success("发布成功");
|
return AjaxResult.success("发布成功");
|
||||||
|
|
|
@ -1162,15 +1162,16 @@ var table = {
|
||||||
$.operate.submit(url, "post", "json", data);
|
$.operate.submit(url, "post", "json", data);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
// 删除信息
|
// 发布信息
|
||||||
deployment: function(id) {
|
deployment: function(id,type) {
|
||||||
|
console.log("=======>"+type);
|
||||||
table.set();
|
table.set();
|
||||||
$.modal.confirm("确定发布该条" + table.options.modalName + "信息吗?", function() {
|
$.modal.confirm("确定发布该条" + table.options.modalName + "信息吗?", function() {
|
||||||
var url = $.common.isEmpty(id) ? table.options.deploymentUrl : table.options.deploymentUrl.replace("{id}", id);
|
var url = $.common.isEmpty(id) ? table.options.deploymentUrl : table.options.deploymentUrl.replace("{id}", id);
|
||||||
if(table.options.type == table_type.bootstrapTreeTable) {
|
if(table.options.type == table_type.bootstrapTreeTable) {
|
||||||
$.operate.get(url);
|
$.operate.get(url);
|
||||||
} else {
|
} else {
|
||||||
var data = { "id": id };
|
var data = { "id": id ,"type":type};
|
||||||
$.operate.submit(url, "post", "json", data);
|
$.operate.submit(url, "post", "json", data);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -125,7 +125,7 @@
|
||||||
formatter: function(value, row, index) {
|
formatter: function(value, row, index) {
|
||||||
var actions = [];
|
var actions = [];
|
||||||
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.parentDetail(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑模型</a> ');
|
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.parentDetail(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑模型</a> ');
|
||||||
actions.push('<a class="btn btn-warning btn-xs ' + deploymentFlag + '" href="javascript:void(0)" onclick="$.operate.deployment(\'' + row.id + '\')"><i class="fa fa-dashboard"></i>发布</a> ');
|
actions.push('<a class="btn btn-warning btn-xs ' + deploymentFlag + '" href="javascript:void(0)" onclick="$.operate.deployment(\'' + row.id + '\','+row.modelType+')"><i class="fa fa-dashboard"></i>发布</a> ');
|
||||||
actions.push('<a class="btn btn-info btn-xs ' + exportXmlFlag + '" href="javascript:void(0)" onclick="getXmlUrl(\'' + row.id + '\')"><i class="fa fa-expand"></i>导出</a> ');
|
actions.push('<a class="btn btn-info btn-xs ' + exportXmlFlag + '" href="javascript:void(0)" onclick="getXmlUrl(\'' + row.id + '\')"><i class="fa fa-expand"></i>导出</a> ');
|
||||||
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>删除</a>');
|
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>删除</a>');
|
||||||
return actions.join('');
|
return actions.join('');
|
||||||
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
package com.snow.flowable;
|
||||||
|
|
||||||
|
import com.google.common.collect.Maps;
|
||||||
|
import com.snow.JunitTestApplication;
|
||||||
|
import com.snow.common.json.JSON;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.flowable.dmn.api.*;
|
||||||
|
import org.flowable.dmn.engine.DmnEngineConfiguration;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author qimingjin
|
||||||
|
* @Title:
|
||||||
|
* @Description:
|
||||||
|
* @date 2021/1/14 16:31
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
public class DMNServiceTests extends JunitTestApplication {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DmnRuleService dmnRuleService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DmnEngineConfiguration dmnEngineConfiguration;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DmnHistoryService dmnHistoryService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DmnManagementService dmnManagementService;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void executeDecisionTest(){
|
||||||
|
ExecuteDecisionBuilder variable = dmnRuleService.createExecuteDecisionBuilder().variable("", "");
|
||||||
|
Map<String,Object> paramMap=Maps.newHashMap();
|
||||||
|
paramMap.put("manager","网二");
|
||||||
|
paramMap.put("zjl","张三");
|
||||||
|
paramMap.put("rs","李四");
|
||||||
|
Map<String, Object> result = dmnRuleService.createExecuteDecisionBuilder()
|
||||||
|
.decisionKey("testKey")
|
||||||
|
.variables(paramMap)
|
||||||
|
.variable("money", "50")
|
||||||
|
.executeWithSingleResult();
|
||||||
|
|
||||||
|
List<DmnHistoricDecisionExecution> testKey = dmnHistoryService.createHistoricDecisionExecutionQuery().decisionKey("testKey")
|
||||||
|
.orderByEndTime()
|
||||||
|
.desc()
|
||||||
|
.list();
|
||||||
|
log.info(com.alibaba.fastjson.JSON.toJSONString(testKey));
|
||||||
|
}
|
||||||
|
}
|
|
@ -26,7 +26,7 @@ public class DeploymentTests extends JunitTestApplication {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void createClassDeployment() throws Exception{
|
public void createClassDeployment() throws Exception{
|
||||||
InputStream in = new BufferedInputStream(new FileInputStream("D:\\ChromeCoreDownloads\\snow_leave.bpmn20.xml"));
|
// InputStream in = new BufferedInputStream(new FileInputStream("D:\\ChromeCoreDownloads\\snow_leave.bpmn20.xml"));
|
||||||
DeploymentDTO classDeploymentDTO=new DeploymentDTO();
|
DeploymentDTO classDeploymentDTO=new DeploymentDTO();
|
||||||
// classDeploymentDTO.setKey("snow_leave");
|
// classDeploymentDTO.setKey("snow_leave");
|
||||||
classDeploymentDTO.setName("请假流程");
|
classDeploymentDTO.setName("请假流程");
|
||||||
|
@ -34,7 +34,8 @@ public class DeploymentTests extends JunitTestApplication {
|
||||||
classDeploymentDTO.setResourceName("请假流程");
|
classDeploymentDTO.setResourceName("请假流程");
|
||||||
// classDeploymentDTO.setTenantId("snow");
|
// classDeploymentDTO.setTenantId("snow");
|
||||||
// classDeploymentDTO.setClassPathResource("D:\\modeler\\leave.bpmn20.xml");
|
// classDeploymentDTO.setClassPathResource("D:\\modeler\\leave.bpmn20.xml");
|
||||||
Deployment classDeployment = flowAblePublishService.createInputStreamDeployment(classDeploymentDTO,in);
|
// Deployment classDeployment = flowAblePublishService.createInputStreamDeployment(classDeploymentDTO,in);
|
||||||
log.info("发布结果:{}",JSON.toJSONString(classDeployment));
|
flowAblePublishService.deploymentByModelId("054863dc-5629-11eb-802b-040e3c9c6b2f",4);
|
||||||
|
// log.info("发布结果:{}",JSON.toJSONString(classDeployment));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,8 @@ public class FlowableConfig {
|
||||||
configuration.setTransactionManager(transactionManager);
|
configuration.setTransactionManager(transactionManager);
|
||||||
configuration.setDatabaseSchemaUpdate("false");
|
configuration.setDatabaseSchemaUpdate("false");
|
||||||
configuration.setAsyncExecutorActivate(true);
|
configuration.setAsyncExecutorActivate(true);
|
||||||
|
//开启历史数据异步保存
|
||||||
|
configuration.setAsyncHistoryEnabled(true);
|
||||||
configuration.setProcessDiagramGenerator(customProcessDiagramGenerator);
|
configuration.setProcessDiagramGenerator(customProcessDiagramGenerator);
|
||||||
//修改id生成器
|
//修改id生成器
|
||||||
configuration.setIdGenerator(new FlowIdGenerator());
|
configuration.setIdGenerator(new FlowIdGenerator());
|
||||||
|
|
|
@ -32,4 +32,9 @@ public class DeploymentDTO implements Serializable {
|
||||||
* 文件名
|
* 文件名
|
||||||
*/
|
*/
|
||||||
private String resourceName;
|
private String resourceName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 发布类型
|
||||||
|
*/
|
||||||
|
private Integer deploymentType;
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,4 +56,13 @@ public interface FlowablePublishService {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
Deployment createBytesDeploymentByModelId(String id);
|
Deployment createBytesDeploymentByModelId(String id);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据模型ID发布
|
||||||
|
* @param id
|
||||||
|
* @param deploymentType
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
String deploymentByModelId(String id,int deploymentType);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,19 @@
|
||||||
package com.snow.flowable.service.impl;
|
package com.snow.flowable.service.impl;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.snow.common.utils.StringUtils;
|
import com.snow.common.utils.StringUtils;
|
||||||
import com.snow.flowable.domain.ClassDeploymentDTO;
|
import com.snow.flowable.domain.ClassDeploymentDTO;
|
||||||
import com.snow.flowable.domain.DeploymentDTO;
|
import com.snow.flowable.domain.DeploymentDTO;
|
||||||
import com.snow.flowable.service.FlowablePublishService;
|
import com.snow.flowable.service.FlowablePublishService;
|
||||||
|
import com.snow.system.domain.ActDeModel;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.flowable.bpmn.model.BpmnModel;
|
import org.flowable.bpmn.model.BpmnModel;
|
||||||
import org.flowable.common.engine.impl.util.IoUtil;
|
import org.flowable.common.engine.impl.util.IoUtil;
|
||||||
|
import org.flowable.dmn.api.DmnDeployment;
|
||||||
|
import org.flowable.dmn.api.DmnRepositoryService;
|
||||||
|
import org.flowable.dmn.model.DmnDefinition;
|
||||||
|
import org.flowable.editor.dmn.converter.DmnJsonConverter;
|
||||||
import org.flowable.engine.RepositoryService;
|
import org.flowable.engine.RepositoryService;
|
||||||
import org.flowable.engine.repository.Deployment;
|
import org.flowable.engine.repository.Deployment;
|
||||||
import org.flowable.engine.repository.DeploymentBuilder;
|
import org.flowable.engine.repository.DeploymentBuilder;
|
||||||
|
@ -15,6 +22,7 @@ import org.flowable.ui.modeler.service.ModelServiceImpl;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
|
||||||
import java.util.zip.ZipInputStream;
|
import java.util.zip.ZipInputStream;
|
||||||
|
@ -46,6 +54,14 @@ public class FlowablePublishServiceImpl implements FlowablePublishService {
|
||||||
@Autowired
|
@Autowired
|
||||||
private ModelServiceImpl modelService;
|
private ModelServiceImpl modelService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ObjectMapper objectMapper;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DmnRepositoryService dmnRepositoryService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* class部署
|
* class部署
|
||||||
* @return
|
* @return
|
||||||
|
@ -136,4 +152,32 @@ public class FlowablePublishServiceImpl implements FlowablePublishService {
|
||||||
return deploy;
|
return deploy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String deploymentByModelId(String id, int deploymentType) {
|
||||||
|
Model model = modelService.getModel(id);
|
||||||
|
if(StringUtils.isNull(model)){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
if(deploymentType==ActDeModel.MODEL_TYPE_DECISION_TABLE){
|
||||||
|
JsonNode editorJsonNode = objectMapper.readTree(model.getModelEditorJson());
|
||||||
|
DmnJsonConverter dmnJsonConverter=new DmnJsonConverter();
|
||||||
|
DmnDefinition dmnDefinition = dmnJsonConverter.convertToDmn(editorJsonNode, model.getId(), model.getVersion(), null);
|
||||||
|
DmnDeployment deploy = dmnRepositoryService.createDeployment()
|
||||||
|
.name(model.getName())
|
||||||
|
.addDmnModel(model.getName()+".dmn",dmnDefinition)
|
||||||
|
.category("system_dmn")
|
||||||
|
.deploy();
|
||||||
|
return deploy.getId();
|
||||||
|
}else if(deploymentType==ActDeModel.MODEL_TYPE_BPMN){
|
||||||
|
Deployment deployment = createBytesDeploymentByModelId(id);
|
||||||
|
return deployment.getId();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
} catch (IOException e) {
|
||||||
|
log.error("DeploymentByModelId is fail",e.getMessage());
|
||||||
|
throw new RuntimeException("发布流程失败");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,7 @@ import org.flowable.bpmn.model.*;
|
||||||
import org.flowable.bpmn.model.Process;
|
import org.flowable.bpmn.model.Process;
|
||||||
import org.flowable.common.engine.impl.identity.Authentication;
|
import org.flowable.common.engine.impl.identity.Authentication;
|
||||||
import org.flowable.common.engine.impl.util.IoUtil;
|
import org.flowable.common.engine.impl.util.IoUtil;
|
||||||
|
import org.flowable.dmn.api.DmnRepositoryService;
|
||||||
import org.flowable.engine.*;
|
import org.flowable.engine.*;
|
||||||
import org.flowable.engine.history.HistoricActivityInstance;
|
import org.flowable.engine.history.HistoricActivityInstance;
|
||||||
import org.flowable.engine.history.HistoricProcessInstance;
|
import org.flowable.engine.history.HistoricProcessInstance;
|
||||||
|
@ -99,6 +100,7 @@ public class FlowableServiceImpl implements FlowableService {
|
||||||
@Autowired
|
@Autowired
|
||||||
private RepositoryService repositoryService;
|
private RepositoryService repositoryService;
|
||||||
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private HistoryService historyService;
|
private HistoryService historyService;
|
||||||
|
|
||||||
|
@ -111,9 +113,6 @@ public class FlowableServiceImpl implements FlowableService {
|
||||||
@Autowired
|
@Autowired
|
||||||
private ExpressionServiceImpl expressionService;
|
private ExpressionServiceImpl expressionService;
|
||||||
|
|
||||||
@Resource
|
|
||||||
private SysUserMapper sysUserMapper;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ModelServiceImpl modelService;
|
private ModelServiceImpl modelService;
|
||||||
|
|
||||||
|
@ -148,7 +147,7 @@ public class FlowableServiceImpl implements FlowableService {
|
||||||
model.setCreatedBy(actDeModel.getCreatedBy());
|
model.setCreatedBy(actDeModel.getCreatedBy());
|
||||||
model.setKey(actDeModel.getModelKey());
|
model.setKey(actDeModel.getModelKey());
|
||||||
model.setModelType(actDeModel.getModelType().intValue());
|
model.setModelType(actDeModel.getModelType().intValue());
|
||||||
model.setVersion(1);
|
model.setVersion(actDeModel.getVersion().intValue());
|
||||||
model.setModelEditorJson(editorNode.toString());
|
model.setModelEditorJson(editorNode.toString());
|
||||||
modelService.saveModel(model);
|
modelService.saveModel(model);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package com.snow.system.domain;
|
package com.snow.system.domain;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import com.snow.common.annotation.Excel;
|
import com.snow.common.annotation.Excel;
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import com.snow.common.core.domain.BaseEntity;
|
import com.snow.common.core.domain.BaseEntity;
|
||||||
|
@ -78,6 +80,19 @@ public class ActDeModel extends BaseEntity
|
||||||
@Excel(name = "租户ID")
|
@Excel(name = "租户ID")
|
||||||
private String tenantId;
|
private String tenantId;
|
||||||
|
|
||||||
|
private List modelTypeList;
|
||||||
|
|
||||||
|
public static final int MODEL_TYPE_BPMN = 0;
|
||||||
|
|
||||||
|
public static final int MODEL_TYPE_FORM = 2;
|
||||||
|
|
||||||
|
public static final int MODEL_TYPE_APP = 3;
|
||||||
|
|
||||||
|
public static final int MODEL_TYPE_DECISION_TABLE = 4;
|
||||||
|
|
||||||
|
public static final int MODEL_TYPE_CMMN = 5;
|
||||||
|
|
||||||
|
public static final int MODEL_TYPE_DECISION_SERVICE = 6;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
|
|
|
@ -40,6 +40,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<if test="modelEditorJson != null and modelEditorJson != ''"> and model_editor_json = #{modelEditorJson}</if>
|
<if test="modelEditorJson != null and modelEditorJson != ''"> and model_editor_json = #{modelEditorJson}</if>
|
||||||
<if test="modelType != null "> and model_type = #{modelType}</if>
|
<if test="modelType != null "> and model_type = #{modelType}</if>
|
||||||
<if test="tenantId != null and tenantId != ''"> and tenant_id = #{tenantId}</if>
|
<if test="tenantId != null and tenantId != ''"> and tenant_id = #{tenantId}</if>
|
||||||
|
|
||||||
|
<if test="modelTypeList != null and modelTypeList.size()>0">
|
||||||
|
and model_type IN
|
||||||
|
<foreach item="item" index="index" collection="modelTypeList" open="(" separator="," close=")">
|
||||||
|
#{item}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue