Commit 2048dd9a by shenweidong

0627-1

parents c6c7e752 d2eca046
...@@ -8,15 +8,13 @@ ...@@ -8,15 +8,13 @@
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" /> <outputRelativeToContentRoot value="true" />
<module name="jyzb-common" /> <module name="jyzb-common" />
<module name="jyzb-process" />
<module name="jyzb-api" /> <module name="jyzb-api" />
<module name="jyzb-boot" />
<module name="jyzb-biz" /> <module name="jyzb-biz" />
<module name="jyzb-process" /> <module name="jyzb-boot" />
</profile> </profile>
</annotationProcessing> </annotationProcessing>
<bytecodeTargetLevel> <bytecodeTargetLevel target="9" />
<module name="jyzb-business" target="1.8" />
</bytecodeTargetLevel>
</component> </component>
<component name="JavacSettings"> <component name="JavacSettings">
<option name="ADDITIONAL_OPTIONS_OVERRIDE"> <option name="ADDITIONAL_OPTIONS_OVERRIDE">
...@@ -24,7 +22,6 @@ ...@@ -24,7 +22,6 @@
<module name="jyzb-api" options="-parameters" /> <module name="jyzb-api" options="-parameters" />
<module name="jyzb-biz" options="-parameters" /> <module name="jyzb-biz" options="-parameters" />
<module name="jyzb-boot" options="-parameters" /> <module name="jyzb-boot" options="-parameters" />
<module name="jyzb-business" options="-parameters" />
<module name="jyzb-common" options="-parameters" /> <module name="jyzb-common" options="-parameters" />
<module name="jyzb-process" options="-parameters" /> <module name="jyzb-process" options="-parameters" />
</option> </option>
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
<project version="4"> <project version="4">
<component name="Encoding"> <component name="Encoding">
<file url="file://$PROJECT_DIR$/jyzb-api/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/jyzb-api/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyzb-api/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyzb-biz/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/jyzb-biz/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyzb-biz/src/main/resources" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/jyzb-biz/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyzb-boot/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/jyzb-boot/src/main/java" charset="UTF-8" />
...@@ -10,5 +11,7 @@ ...@@ -10,5 +11,7 @@
<file url="file://$PROJECT_DIR$/jyzb-common/src/main/resources" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/jyzb-common/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyzb-process/src/main/java" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/jyzb-process/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/jyzb-process/src/main/resources" charset="UTF-8" /> <file url="file://$PROJECT_DIR$/jyzb-process/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
</component> </component>
</project> </project>
\ No newline at end of file
...@@ -2,14 +2,9 @@ ...@@ -2,14 +2,9 @@
<project version="4"> <project version="4">
<component name="RemoteRepositoriesConfiguration"> <component name="RemoteRepositoriesConfiguration">
<remote-repository> <remote-repository>
<option name="id" value="oss" /> <option name="id" value="aliyun" />
<option name="name" value="oss" /> <option name="name" value="aliyun" />
<option name="url" value="https://oss.sonatype.org/content/groups/public" /> <option name="url" value="http://maven.aliyun.com/nexus/content/groups/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="junmp-public" />
<option name="name" value="junmp-public" />
<option name="url" value="http://maven.sothing.top/repository/junmp-public/" />
</remote-repository> </remote-repository>
<remote-repository> <remote-repository>
<option name="id" value="central" /> <option name="id" value="central" />
...@@ -17,24 +12,29 @@ ...@@ -17,24 +12,29 @@
<option name="url" value="https://repo.maven.apache.org/maven2" /> <option name="url" value="https://repo.maven.apache.org/maven2" />
</remote-repository> </remote-repository>
<remote-repository> <remote-repository>
<option name="id" value="junmp-public" />
<option name="name" value="junmp-public" />
<option name="url" value="http://maven.sothing.top/repository/junmp-public/" />
</remote-repository>
<remote-repository>
<option name="id" value="central" /> <option name="id" value="central" />
<option name="name" value="Maven Central repository" /> <option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" /> <option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository> </remote-repository>
<remote-repository> <remote-repository>
<option name="id" value="spring-milestones" /> <option name="id" value="jboss.community" />
<option name="name" value="Spring Milestones" /> <option name="name" value="JBoss Community repository" />
<option name="url" value="https://repo.spring.io/libs-milestone" /> <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository> </remote-repository>
<remote-repository> <remote-repository>
<option name="id" value="aliyun" /> <option name="id" value="oss" />
<option name="name" value="aliyun" /> <option name="name" value="oss" />
<option name="url" value="http://maven.aliyun.com/nexus/content/groups/public/" /> <option name="url" value="https://oss.sonatype.org/content/groups/public" />
</remote-repository> </remote-repository>
<remote-repository> <remote-repository>
<option name="id" value="jboss.community" /> <option name="id" value="spring-milestones" />
<option name="name" value="JBoss Community repository" /> <option name="name" value="Spring Milestones" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" /> <option name="url" value="https://repo.spring.io/libs-milestone" />
</remote-repository> </remote-repository>
</component> </component>
</project> </project>
\ No newline at end of file
...@@ -17,5 +17,5 @@ ...@@ -17,5 +17,5 @@
</set> </set>
</option> </option>
</component> </component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK" /> <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8 (3)" project-jdk-type="JavaSDK" />
</project> </project>
\ No newline at end of file
...@@ -87,3 +87,4 @@ flowable: ...@@ -87,3 +87,4 @@ flowable:
enabled: false enabled: false
eventregistry: eventregistry:
enabled: false enabled: false
enabled: false
D:\java-project\jyzb\jyzb-platform\jyzb-boot\src\main\java\com\junmp\jyzb\boot\config\GlobalCorsConfig.java C:\项目\JAVA\主平台\junmp-jyzb-app\jyzb-boot\src\main\java\com\junmp\jyzb\boot\config\GlobalCorsConfig.java
D:\java-project\jyzb\jyzb-platform\jyzb-boot\src\main\java\com\junmp\jyzb\boot\JyzbBootApplication.java C:\项目\JAVA\主平台\junmp-jyzb-app\jyzb-boot\src\main\java\com\junmp\jyzb\boot\config\Swagger2Config.java
D:\java-project\jyzb\jyzb-platform\jyzb-boot\src\main\java\com\junmp\jyzb\boot\core\handle\GlobalExceptionHandler.java C:\项目\JAVA\主平台\junmp-jyzb-app\jyzb-boot\src\main\java\com\junmp\jyzb\boot\core\handle\GlobalExceptionHandler.java
D:\java-project\jyzb\jyzb-platform\jyzb-boot\src\main\java\com\junmp\jyzb\boot\config\JsonSerializerConfig.java C:\项目\JAVA\主平台\junmp-jyzb-app\jyzb-boot\src\main\java\com\junmp\jyzb\boot\module\JpJacksonModule.java
D:\java-project\jyzb\jyzb-platform\jyzb-boot\src\main\java\com\junmp\jyzb\boot\module\JpJacksonModule.java C:\项目\JAVA\主平台\junmp-jyzb-app\jyzb-boot\src\main\java\com\junmp\jyzb\boot\config\JsonSerializerConfig.java
D:\java-project\jyzb\jyzb-platform\jyzb-boot\src\main\java\com\junmp\jyzb\boot\config\MapperScanConfiguration.java C:\项目\JAVA\主平台\junmp-jyzb-app\jyzb-boot\src\main\java\com\junmp\jyzb\boot\config\MapperScanConfiguration.java
D:\java-project\jyzb\jyzb-platform\jyzb-boot\src\main\java\com\junmp\jyzb\boot\config\Swagger2Config.java C:\项目\JAVA\主平台\junmp-jyzb-app\jyzb-boot\src\main\java\com\junmp\jyzb\boot\JyzbBootApplication.java
...@@ -223,7 +223,13 @@ ...@@ -223,7 +223,13 @@
<version>1.1.4c</version> <version>1.1.4c</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<!-- <dependency>--> <dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-annotations</artifactId>
<version>3.0.3</version>
<scope>compile</scope>
</dependency>
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>--> <!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger-ui</artifactId>--> <!-- <artifactId>springfox-swagger-ui</artifactId>-->
<!-- <version>2.9.2</version>--> <!-- <version>2.9.2</version>-->
......
...@@ -4,21 +4,17 @@ package com.junmp.junmpProcess.common; ...@@ -4,21 +4,17 @@ package com.junmp.junmpProcess.common;
* *
*/ */
public interface CommonConstants { public interface CommonConstants {
/** /** {@code 500 Server Error} (HTTP/1.0 - RFC 1945) */
* {@code 500 Server Error} (HTTP/1.0 - RFC 1945)
*/
Integer SC_INTERNAL_SERVER_ERROR_500 = 500; Integer SC_INTERNAL_SERVER_ERROR_500 = 500;
/** /** {@code 200 OK} (HTTP/1.0 - RFC 1945) */
* {@code 200 OK} (HTTP/1.0 - RFC 1945)
*/
Integer SC_OK_200 = 200; Integer SC_OK_200 = 200;
String FORM_VAR = "formData"; String FORM_VAR="formData";
String PROCESS_STATUS = "processStatus"; String PROCESS_STATUS="processStatus";
String START_USER_INFO = "startUser"; String START_USER_INFO="startUser";
String BUSINESS_STATUS_1 = "1"; //正在处理 String BUSINESS_STATUS_1="1"; //正在处理
String BUSINESS_STATUS_2 = "2";//撤销 String BUSINESS_STATUS_2="2";//撤销
String BUSINESS_STATUS_3 = "3";//驳回 String BUSINESS_STATUS_3="3";//驳回
String BUSINESS_STATUS_4 = "4";//已结束 String BUSINESS_STATUS_4="4";//已结束
} }
...@@ -44,7 +44,7 @@ public class ActivitiConfig { ...@@ -44,7 +44,7 @@ public class ActivitiConfig {
config.setTransactionManager(transactionManager); config.setTransactionManager(transactionManager);
config.setDisableIdmEngine(true); config.setDisableIdmEngine(true);
config.setDatabaseType(ProcessEngineConfigurationImpl.DATABASE_TYPE_MYSQL); config.setDatabaseType(ProcessEngineConfigurationImpl.DATABASE_TYPE_MYSQL);
config.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE); config.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE);
config.setDelegateExpressionFieldInjectionMode(DelegateExpressionFieldInjectionMode.MIXED); config.setDelegateExpressionFieldInjectionMode(DelegateExpressionFieldInjectionMode.MIXED);
config.setIdGenerator(idWorkerIdGenerator); config.setIdGenerator(idWorkerIdGenerator);
config.setAsyncExecutorActivate(Boolean.TRUE); config.setAsyncExecutorActivate(Boolean.TRUE);
...@@ -60,9 +60,9 @@ public class ActivitiConfig { ...@@ -60,9 +60,9 @@ public class ActivitiConfig {
config.setHttpClientConfig(httpClientConfig); config.setHttpClientConfig(httpClientConfig);
config.setKnowledgeBaseCacheLimit(200); config.setKnowledgeBaseCacheLimit(200);
config.setProcessDefinitionCacheLimit(200); config.setProcessDefinitionCacheLimit(200);
List<JobHandler> customJobHandlers = new ArrayList<>(); // List<JobHandler> customJobHandlers = new ArrayList<>();
customJobHandlers.add(new CustomJobHandler()); // customJobHandlers.add(new CustomJobHandler());
config.setCustomJobHandlers(customJobHandlers); // config.setCustomJobHandlers(customJobHandlers);
return config; return config;
} }
......
package com.junmp.junmpProcess.controller; package com.junmp.junmpProcess.controller;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.map.MapUtil;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.junmp.junmpProcess.common.R;
import com.junmp.junmpProcess.common.Result;
import com.junmp.junmpProcess.doc.BpmnDoc; import com.junmp.junmpProcess.doc.BpmnDoc;
import com.junmp.junmpProcess.dto.ApplyDTO;
import com.junmp.junmpProcess.dto.HandleDataDTO;
import com.junmp.junmpProcess.dto.StartProcessInstanceDTO;
import com.junmp.junmpProcess.dto.TaskDTO;
import com.junmp.junmpProcess.dto.json.JunmpUserInfo;
import com.junmp.junmpProcess.dto.json.UserInfo;
import com.junmp.junmpProcess.entity.ProcessTemplates;
import com.junmp.junmpProcess.exception.WorkFlowException;
import com.junmp.junmpProcess.service.Repository.ProcessTemplateService;
import com.junmp.junmpProcess.utils.BpmnConvert;
import com.junmp.junmpProcess.vo.HistoryProcessInstanceVO;
import com.junmp.junmpProcess.vo.ProcessVO;
import com.junmp.junmpProcess.vo.TaskVO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import com.junmp.junmpProcess.service.Bussiness.WorkProcessService; import com.junmp.junmpProcess.service.Bussiness.WorkProcessService;
import org.flowable.bpmn.model.BpmnModel;
import org.flowable.bpmn.model.FlowElement;
import org.flowable.common.engine.impl.identity.Authentication;
import org.flowable.engine.*;
import org.flowable.engine.repository.Deployment;
import org.flowable.engine.repository.ProcessDefinition;
import org.flowable.engine.runtime.ActivityInstance;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.engine.runtime.ProcessInstanceBuilder;
import org.flowable.task.api.DelegationState;
import org.flowable.task.api.Task;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import javax.annotation.Resource;
import org.springframework.web.bind.annotation.RestController; import javax.sql.DataSource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static com.junmp.junmpProcess.common.CommonConstants.*;
@Slf4j @Slf4j
@RestController @RestController
@RequestMapping("/Bpmn") @RequestMapping("/Process")
@Api(tags = "流程表单方法")
public class BpmnController implements BpmnDoc { public class BpmnController implements BpmnDoc {
@Resource
private RepositoryService repositoryService;
@Autowired
private ProcessTemplateService processTemplateService;
@Autowired @Autowired
private WorkProcessService ProcessService; private WorkProcessService WorkProcessService;
@Override
@PostMapping(value = "create")
public Result<String> create(@RequestBody ProcessVO processVO) throws JsonProcessingException {
return WorkProcessService.createBpmn(processVO);
@Override }
@PostMapping(value = "bpmn/create") @ApiOperation("通过流程定义id启动流程")
@PostMapping("start")
public Result<Object> start(@RequestBody StartProcessInstanceDTO startProcessInstanceDTO) {
return WorkProcessService.start(startProcessInstanceDTO);
}
@ApiOperation("查看我发起的流程")
@PostMapping("applyList")
public Result<Page<HistoryProcessInstanceVO>> applyList(@RequestBody ApplyDTO ApplyDTO) {
return WorkProcessService.applyList(ApplyDTO);
}
@ApiOperation("查看我的待办")
@PostMapping("toDoList")
public Result<Page<TaskVO>> toDoList(@RequestBody TaskDTO taskDTO){
return WorkProcessService.toDoList(taskDTO);
}
@ApiOperation("同意按钮")
@PostMapping("agree")
public Result<Page<TaskVO>> agree(@RequestBody HandleDataDTO handleDataDTO){
return WorkProcessService.agree(handleDataDTO);
}
@ApiOperation("拒绝按钮")
@PostMapping("refuse")
public Result<Page<TaskVO>> refuse(@RequestBody HandleDataDTO handleDataDTO){
return WorkProcessService.refuse(handleDataDTO);
}
/**
* 查询表单模板数据
*
* @param templateId 模板id
* @return 模板详情数据
*/
@PostMapping(value = "getFormTemplateById")
public Object getFormTemplateById(String templateId) {
ProcessTemplates processTemplates = processTemplateService.getById(templateId);
processTemplates.setFormId(processTemplates.getTemplateId());
return R.ok(processTemplates);
}
public boolean create(@RequestBody String nodeJson) {
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = null; /**
try { * 查询表单模板数据
jsonNode = objectMapper.readTree(nodeJson); *
} catch (JsonProcessingException e) { * @param templateId 模板id
throw new RuntimeException(e); * @return 模板详情数据
*/
@ApiOperation("通过模板id查看流程信息 会附带流程定义id")
@GetMapping("detail")
public Result<ProcessTemplates> detail(@RequestParam("templateId") String templateId){
ProcessTemplates processTemplates = processTemplateService.getById(templateId);
processTemplates.setLogo(processTemplates.getIcon());
processTemplates.setFormId(processTemplates.getTemplateId());
processTemplates.setFormName(processTemplates.getTemplateName());
ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionKey("process"+templateId).latestVersion().singleResult();
if(processDefinition==null){
throw new WorkFlowException("该流程暂未接入Flowable,请重试");
} }
return ProcessService.createBpmn(jsonNode); processTemplates.setProcessDefinitionId(processDefinition.getId());
return Result.OK(processTemplates);
} }
} }
package com.junmp.junmpProcess.doc; package com.junmp.junmpProcess.doc;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.junmp.junmpProcess.common.Result;
import com.junmp.junmpProcess.vo.ProcessVO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -10,5 +13,5 @@ public interface BpmnDoc { ...@@ -10,5 +13,5 @@ public interface BpmnDoc {
* bpmn划线 * bpmn划线
*/ */
@ApiOperation(value = "bpmn划线", tags = "bpmn划线") @ApiOperation(value = "bpmn划线", tags = "bpmn划线")
boolean create(String nodeJson); Result<String> create(ProcessVO processVO) throws JsonProcessingException;
} }
package com.junmp.junmpProcess.dto; package com.junmp.junmpProcess.dto;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.junmp.junmpProcess.dto.json.JunmpUserInfo;
import lombok.Data; import lombok.Data;
import com.junmp.junmpProcess.dto.json.UserInfo; import com.junmp.junmpProcess.dto.json.UserInfo;
...@@ -15,6 +16,6 @@ import java.util.Map; ...@@ -15,6 +16,6 @@ import java.util.Map;
public class StartProcessInstanceDTO { public class StartProcessInstanceDTO {
private String processDefinitionId; private String processDefinitionId;
private JSONObject formData; private JSONObject formData;
private Map<String, List<UserInfo>> processUsers; private Map<String, List<JunmpUserInfo>> processUsers;
private UserInfo startUserInfo; private JunmpUserInfo startUserInfo;
} }
package com.junmp.junmpProcess.dto; package com.junmp.junmpProcess.dto;
import com.junmp.junmpProcess.dto.json.JunmpUserInfo;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import lombok.Data; import lombok.Data;
import com.junmp.junmpProcess.dto.json.UserInfo; import com.junmp.junmpProcess.dto.json.UserInfo;
...@@ -11,5 +12,5 @@ import com.junmp.junmpProcess.dto.json.UserInfo; ...@@ -11,5 +12,5 @@ import com.junmp.junmpProcess.dto.json.UserInfo;
@Data @Data
@ApiModel("待办 需要返回给前端的VO") @ApiModel("待办 需要返回给前端的VO")
public class TaskDTO extends PageDTO { public class TaskDTO extends PageDTO {
private UserInfo currentUserInfo; private JunmpUserInfo currentUserInfo;
} }
package com.junmp.junmpProcess.dto.json;
import lombok.Data;
import java.util.List;
@Data
public class ApproverGroups {
private String id;
private String approverType;
private String levelMode;
private List<String> approverIds;
private List<String> approverNames;
}
...@@ -29,12 +29,13 @@ public class ChildNode { ...@@ -29,12 +29,13 @@ public class ChildNode {
private String id; private String id;
private String parentId; private String parentId;
private String type; private String type;
private String states;
private String name; private String name;
private String desc; private String desc;
private Properties props; private Properties props;
private ChildNode children; private ChildNode childNode;
private List<ChildNode> conditionNodes;
private List<ChildNode> branchs; private List<ApproverGroups> approverGroups;
private String parallelStr; private String parallelStr;
private JSONObject incoming = new JSONObject(); private JSONObject incoming = new JSONObject();
private Boolean typeElse; private Boolean typeElse;
......
package com.junmp.junmpProcess.dto.json;
import lombok.Data;
@Data
public class JunmpUserInfo {
private String userId;
private String sex;
private String name;
}
...@@ -44,11 +44,11 @@ public class ProcessTemplates implements Serializable { ...@@ -44,11 +44,11 @@ public class ProcessTemplates implements Serializable {
/** /**
* 摸板表单 * 摸板表单
*/ */
private String formItems; private String formJson;
private String settings; private String settings;
private String process; private String processJson;
/** /**
* 图标 * 图标
*/ */
......
package com.junmp.junmpProcess.service.Bussiness; package com.junmp.junmpProcess.service.Bussiness;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.junmp.junmpProcess.common.Result; import com.junmp.junmpProcess.common.Result;
import com.junmp.junmpProcess.dto.ApplyDTO; import com.junmp.junmpProcess.dto.ApplyDTO;
...@@ -8,10 +9,7 @@ import com.junmp.junmpProcess.dto.HandleDataDTO; ...@@ -8,10 +9,7 @@ import com.junmp.junmpProcess.dto.HandleDataDTO;
import com.junmp.junmpProcess.dto.StartProcessInstanceDTO; import com.junmp.junmpProcess.dto.StartProcessInstanceDTO;
import com.junmp.junmpProcess.dto.TaskDTO; import com.junmp.junmpProcess.dto.TaskDTO;
import com.junmp.junmpProcess.entity.ProcessTemplates; import com.junmp.junmpProcess.entity.ProcessTemplates;
import com.junmp.junmpProcess.vo.HandleDataVO; import com.junmp.junmpProcess.vo.*;
import com.junmp.junmpProcess.vo.HistoryProcessInstanceVO;
import com.junmp.junmpProcess.vo.MultiVO;
import com.junmp.junmpProcess.vo.TaskVO;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import java.util.List; import java.util.List;
...@@ -24,7 +22,7 @@ public interface WorkProcessService { ...@@ -24,7 +22,7 @@ public interface WorkProcessService {
* *
* @return * @return
*/ */
boolean createBpmn(JsonNode flowdto); Result<String> createBpmn(ProcessVO processVO) throws JsonProcessingException;
/** /**
* 获取用户可见表单 * 获取用户可见表单
......
package com.junmp.junmpProcess.service.Repository; package com.junmp.junmpProcess.service.Repository;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.fasterxml.jackson.databind.JsonNode;
import com.junmp.junmpProcess.entity.ProcessTemplates; import com.junmp.junmpProcess.entity.ProcessTemplates;
import org.flowable.bpmn.model.BpmnModel;
/** /**
* @author : willian fu * @author : willian fu
...@@ -9,5 +11,10 @@ import com.junmp.junmpProcess.entity.ProcessTemplates; ...@@ -9,5 +11,10 @@ import com.junmp.junmpProcess.entity.ProcessTemplates;
*/ */
public interface ProcessTemplateService extends IService<ProcessTemplates> { public interface ProcessTemplateService extends IService<ProcessTemplates> {
/**
* 获取用户可见表单
*
* @return
*/
public BpmnModel toBpmn(JsonNode processNode, JsonNode formNode,String formName);
} }
...@@ -279,7 +279,7 @@ public class BpmnModelUtils { ...@@ -279,7 +279,7 @@ public class BpmnModelUtils {
incoming.put("incoming", Collections.singletonList(fromId)); incoming.put("incoming", Collections.singletonList(fromId));
String id = createTask(process, flowNode, sequenceFlows, childNodeMap); String id = createTask(process, flowNode, sequenceFlows, childNodeMap);
// 如果当前任务还有后续任务,则遍历创建后续任务 // 如果当前任务还有后续任务,则遍历创建后续任务
ChildNode children = flowNode.getChildren(); ChildNode children = flowNode.getChildNode();
if (Objects.nonNull(children) && StringUtils.isNotBlank(children.getId())) { if (Objects.nonNull(children) && StringUtils.isNotBlank(children.getId())) {
return create(id, children, process, bpmnModel, sequenceFlows, childNodeMap); return create(id, children, process, bpmnModel, sequenceFlows, childNodeMap);
} else { } else {
...@@ -291,7 +291,7 @@ public class BpmnModelUtils { ...@@ -291,7 +291,7 @@ public class BpmnModelUtils {
incoming.put("incoming", Collections.singletonList(fromId)); incoming.put("incoming", Collections.singletonList(fromId));
String id = createTask(process, flowNode, sequenceFlows, childNodeMap); String id = createTask(process, flowNode, sequenceFlows, childNodeMap);
// 如果当前任务还有后续任务,则遍历创建后续任务 // 如果当前任务还有后续任务,则遍历创建后续任务
ChildNode children = flowNode.getChildren(); ChildNode children = flowNode.getChildNode();
if (Objects.nonNull(children) && StringUtils.isNotBlank(children.getId())) { if (Objects.nonNull(children) && StringUtils.isNotBlank(children.getId())) {
return create(id, children, process, bpmnModel, sequenceFlows, childNodeMap); return create(id, children, process, bpmnModel, sequenceFlows, childNodeMap);
} else { } else {
...@@ -340,10 +340,10 @@ public class BpmnModelUtils { ...@@ -340,10 +340,10 @@ public class BpmnModelUtils {
process.addFlowElement(exclusiveGateway); process.addFlowElement(exclusiveGateway);
process.addFlowElement(connect(formId, exclusiveGatewayId, sequenceFlows, childNodeMap, process)); process.addFlowElement(connect(formId, exclusiveGatewayId, sequenceFlows, childNodeMap, process));
if (Objects.isNull(flowNode.getBranchs()) && Objects.isNull(flowNode.getChildren())) { if (Objects.isNull(flowNode.getConditionNodes()) && Objects.isNull(flowNode.getChildNode())) {
return exclusiveGatewayId; return exclusiveGatewayId;
} }
List<ChildNode> flowNodes = flowNode.getBranchs(); List<ChildNode> flowNodes = flowNode.getConditionNodes();
List<String> incoming = Lists.newArrayListWithCapacity(flowNodes.size()); List<String> incoming = Lists.newArrayListWithCapacity(flowNodes.size());
List<JSONObject> conditions = Lists.newCopyOnWriteArrayList(); List<JSONObject> conditions = Lists.newCopyOnWriteArrayList();
for (ChildNode element : flowNodes) { for (ChildNode element : flowNodes) {
...@@ -352,7 +352,7 @@ public class BpmnModelUtils { ...@@ -352,7 +352,7 @@ public class BpmnModelUtils {
exclusiveGateway.setDefaultFlow(element.getId()); exclusiveGateway.setDefaultFlow(element.getId());
} }
childNodeMap.put(element.getId(), element); childNodeMap.put(element.getId(), element);
ChildNode childNode = element.getChildren(); ChildNode childNode = element.getChildNode();
String nodeName = element.getName(); String nodeName = element.getName();
Properties props = element.getProps(); Properties props = element.getProps();
...@@ -395,7 +395,7 @@ public class BpmnModelUtils { ...@@ -395,7 +395,7 @@ public class BpmnModelUtils {
} }
ChildNode childNode = flowNode.getChildren(); ChildNode childNode = flowNode.getChildNode();
if (Objects.nonNull(childNode) && StringUtils.isNotBlank(childNode.getId())) { if (Objects.nonNull(childNode) && StringUtils.isNotBlank(childNode.getId())) {
String parentId = childNode.getParentId(); String parentId = childNode.getParentId();
...@@ -418,8 +418,8 @@ public class BpmnModelUtils { ...@@ -418,8 +418,8 @@ public class BpmnModelUtils {
incomingObj.put("incoming", incoming); incomingObj.put("incoming", incoming);
FlowElement flowElement = bpmnModel.getFlowElement(incoming.get(0)); FlowElement flowElement = bpmnModel.getFlowElement(incoming.get(0));
// 1.0 先进行边连接, 暂存 nextNode // 1.0 先进行边连接, 暂存 nextNode
ChildNode nextNode = childNode.getChildren(); ChildNode nextNode = childNode.getChildNode();
childNode.setChildren(null); childNode.setChildNode(null);
String identifier = endExId; String identifier = endExId;
for (int i = 0; i < incoming.size(); i++) { for (int i = 0; i < incoming.size(); i++) {
process.addFlowElement(connect(incoming.get(i), identifier, sequenceFlows, childNodeMap, process)); process.addFlowElement(connect(incoming.get(i), identifier, sequenceFlows, childNodeMap, process));
...@@ -504,15 +504,15 @@ public class BpmnModelUtils { ...@@ -504,15 +504,15 @@ public class BpmnModelUtils {
process.addFlowElement(parallelGateway); process.addFlowElement(parallelGateway);
process.addFlowElement(connect(formId, parallelGatewayId, sequenceFlows, childNodeMap, process)); process.addFlowElement(connect(formId, parallelGatewayId, sequenceFlows, childNodeMap, process));
if (Objects.isNull(flowNode.getBranchs()) && Objects.isNull(flowNode.getChildren())) { if (Objects.isNull(flowNode.getConditionNodes()) && Objects.isNull(flowNode.getChildNode())) {
return parallelGatewayId; return parallelGatewayId;
} }
List<ChildNode> flowNodes = flowNode.getBranchs(); List<ChildNode> flowNodes = flowNode.getConditionNodes();
List<String> incoming = Lists.newArrayListWithCapacity(flowNodes.size()); List<String> incoming = Lists.newArrayListWithCapacity(flowNodes.size());
for (ChildNode element : flowNodes) { for (ChildNode element : flowNodes) {
childNodeMap.put(element.getId(), element); childNodeMap.put(element.getId(), element);
ChildNode childNode = element.getChildren(); ChildNode childNode = element.getChildNode();
if (Objects.isNull(childNode) || StringUtils.isBlank(childNode.getId())) { if (Objects.isNull(childNode) || StringUtils.isBlank(childNode.getId())) {
incoming.add(parallelGatewayId); incoming.add(parallelGatewayId);
continue; continue;
...@@ -523,7 +523,7 @@ public class BpmnModelUtils { ...@@ -523,7 +523,7 @@ public class BpmnModelUtils {
} }
} }
ChildNode childNode = flowNode.getChildren(); ChildNode childNode = flowNode.getChildNode();
if (Objects.nonNull(childNode) && StringUtils.isNotBlank(childNode.getId())) { if (Objects.nonNull(childNode) && StringUtils.isNotBlank(childNode.getId())) {
String parentId = childNode.getParentId(); String parentId = childNode.getParentId();
ChildNode parentChildNode = childNodeMap.get(parentId); ChildNode parentChildNode = childNodeMap.get(parentId);
...@@ -546,8 +546,8 @@ public class BpmnModelUtils { ...@@ -546,8 +546,8 @@ public class BpmnModelUtils {
incomingObj.put("incoming", incoming); incomingObj.put("incoming", incoming);
FlowElement flowElement = bpmnModel.getFlowElement(incoming.get(0)); FlowElement flowElement = bpmnModel.getFlowElement(incoming.get(0));
// 1.0 先进行边连接, 暂存 nextNode // 1.0 先进行边连接, 暂存 nextNode
ChildNode nextNode = childNode.getChildren(); ChildNode nextNode = childNode.getChildNode();
childNode.setChildren(null); childNode.setChildNode(null);
String identifier = endExId; String identifier = endExId;
for (int i = 0; i < incoming.size(); i++) { for (int i = 0; i < incoming.size(); i++) {
FlowElement flowElement1 = bpmnModel.getFlowElement(incoming.get(i)); FlowElement flowElement1 = bpmnModel.getFlowElement(incoming.get(i));
...@@ -579,8 +579,8 @@ public class BpmnModelUtils { ...@@ -579,8 +579,8 @@ public class BpmnModelUtils {
incomingObj.put("incoming", incoming); incomingObj.put("incoming", incoming);
FlowElement flowElement = bpmnModel.getFlowElement(incoming.get(0)); FlowElement flowElement = bpmnModel.getFlowElement(incoming.get(0));
// 1.0 先进行边连接, 暂存 nextNode // 1.0 先进行边连接, 暂存 nextNode
ChildNode nextNode = childNode.getChildren(); ChildNode nextNode = childNode.getChildNode();
childNode.setChildren(null); childNode.setChildNode(null);
String identifier = endExId; String identifier = endExId;
for (int i = 0; i < incoming.size(); i++) { for (int i = 0; i < incoming.size(); i++) {
FlowElement flowElement1 = bpmnModel.getFlowElement(incoming.get(i)); FlowElement flowElement1 = bpmnModel.getFlowElement(incoming.get(i));
...@@ -796,7 +796,7 @@ public class BpmnModelUtils { ...@@ -796,7 +796,7 @@ public class BpmnModelUtils {
Set<String> set = childNodeMap.keySet(); Set<String> set = childNodeMap.keySet();
for (String s : set) { for (String s : set) {
if (StringUtils.isNotBlank(s)) { if (StringUtils.isNotBlank(s)) {
if (s.equals(nodeId)) { if (("Node_"+s).equals(nodeId)) {
return childNodeMap.get(s); return childNodeMap.get(s);
} }
} }
...@@ -806,8 +806,8 @@ public class BpmnModelUtils { ...@@ -806,8 +806,8 @@ public class BpmnModelUtils {
private static void getChildNode(ChildNode childNode, Map<String, ChildNode> childNodeMap) { private static void getChildNode(ChildNode childNode, Map<String, ChildNode> childNodeMap) {
childNodeMap.put(childNode.getId(), childNode); childNodeMap.put(childNode.getId(), childNode);
List<ChildNode> branchs = childNode.getBranchs(); List<ChildNode> branchs = childNode.getConditionNodes();
ChildNode children = childNode.getChildren(); ChildNode children = childNode.getChildNode();
if (branchs != null && branchs.size() > 0) { if (branchs != null && branchs.size() > 0) {
for (ChildNode branch : branchs) { for (ChildNode branch : branchs) {
if (StringUtils.isNotBlank(branch.getId())) { if (StringUtils.isNotBlank(branch.getId())) {
......
package com.junmp.junmpProcess.utils;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonToELConverter {
private static final ObjectMapper objectMapper = new ObjectMapper();
public static String convertToEL(JsonNode jsonNode) {
StringBuilder expressionBuilder = new StringBuilder();
JsonNode[] jsonArray = objectMapper.convertValue(jsonNode, JsonNode[].class);
// 递归构建EL表达式
buildExpression(expressionBuilder, jsonArray);
return expressionBuilder.toString();
}
private static void buildExpression(StringBuilder expressionBuilder, JsonNode[] jsonArray) {
for (int i = 0; i < jsonArray.length; i++) {
JsonNode element = jsonArray[i];
JsonNode conditionNode = element.get("condition");
JsonNode conditionsNode = element.get("conditions");
if (conditionNode != null && conditionNode.isTextual() && conditionsNode != null && conditionsNode.isArray()) {
String condition = conditionNode.asText();
JsonNode[] conditions = objectMapper.convertValue(conditionsNode, JsonNode[].class);
if (i > 0) {
expressionBuilder.append(" ");
expressionBuilder.append("||");
expressionBuilder.append(" ");
}
// expressionBuilder.append("(");
for (int j = 0; j < conditions.length; j++) {
JsonNode conditionObject = conditions[j];
JsonNode columnValueNode = conditionObject.get("columnValue");
JsonNode optTypeNode = conditionObject.get("optType");
JsonNode conditionValueNode = conditionObject.get("conditionValue");
if ( columnValueNode != null && columnValueNode.isTextual()
&& optTypeNode != null && optTypeNode.isTextual()
&& conditionValueNode != null && conditionValueNode.isArray()) {
String columnValue = columnValueNode.asText();
String optType = optTypeNode.asText();
JsonNode[] conditionValues = objectMapper.convertValue(conditionValueNode, JsonNode[].class);
if (j > 0) {
expressionBuilder.append(" ");
expressionBuilder.append("&&");
expressionBuilder.append(" ");
}
expressionBuilder.append("${");
expressionBuilder.append(columnValue);
expressionBuilder.append(" ");
expressionBuilder.append(optType);
expressionBuilder.append(" ");
expressionBuilder.append(conditionValues[0].asText());
expressionBuilder.append("}");
}
}
// expressionBuilder.append(")");
}
}
}
}
\ No newline at end of file
package com.junmp.junmpProcess.vo;
import lombok.Data;
@Data
public class ProcessVO {
private String formJson;
private String formName;
private String processJson;
}
...@@ -105,6 +105,7 @@ com\junmp\junmpProcess\controller\OrgUserAndDeptController.class ...@@ -105,6 +105,7 @@ com\junmp\junmpProcess\controller\OrgUserAndDeptController.class
com\junmp\junmpProcess\controller\WorkspaceProcessController$5.class com\junmp\junmpProcess\controller\WorkspaceProcessController$5.class
com\junmp\junmpProcess\mapper\ProcessTemplatesMapper.class com\junmp\junmpProcess\mapper\ProcessTemplatesMapper.class
com\junmp\junmpProcess\vo\AttachmentVO.class com\junmp\junmpProcess\vo\AttachmentVO.class
com\junmp\junmpProcess\vo\ProcessVO.class
com\junmp\junmpProcess\common\Result.class com\junmp\junmpProcess\common\Result.class
com\junmp\junmpProcess\vo\OrgTreeVo$OrgTreeVoBuilder.class com\junmp\junmpProcess\vo\OrgTreeVo$OrgTreeVoBuilder.class
com\junmp\junmpProcess\controller\WorkspaceProcessController$8.class com\junmp\junmpProcess\controller\WorkspaceProcessController$8.class
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论