提交 81ef1538 authored 作者: wangkr's avatar wangkr

update

上级
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.91isoft</groupId>
<artifactId>rc_workflow</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>27.1-jre</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.9</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>5.22.0</version>
<exclusions>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.4</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.5.8</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.3</version>
</dependency>
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.6.0</version>
</dependency>
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.1.6.RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<build>
<finalName>jz_workflow</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.21.0</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
package com.zgiot.zx.workflow;
import org.activiti.spring.boot.SecurityAutoConfiguration;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* 项目启动类
* 开启Eureka客户端
* @author David
*/
//@EnableEurekaClient
@EnableScheduling
@EnableTransactionManagement(proxyTargetClass = true)
@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
@MapperScan("com.zgiot.zx.workflow.mapper")
//@ServletComponentScan(basePackages = "com.zgiot.zx.workflow.filters")
public class TaskApplication {
public static void main(String[] args) {
// TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
SpringApplication.run(TaskApplication.class, args);
}
}
package com.zgiot.zx.workflow.base;
/**
* 通用check异常
* 一般是由于数据出现问题, api调用方式不对导致
* 不需要为rest api调用方返回特定错误
* 只需要记录好日志即可
*/
public class BizCommonCheckException extends BizCommonException {
public BizCommonCheckException() {
}
public BizCommonCheckException(String message) {
super(message);
}
public BizCommonCheckException(String message, Throwable cause) {
super(message, cause);
}
}
package com.zgiot.zx.workflow.base;
/**
* 通用业务异常基类
*/
public class BizCommonException extends RuntimeException implements IBizException {
/**
* 展示给前端看的错误消息参数
*/
protected String[] restErrMsgArgs;
/**
* 错误详情对象, 包含各类错误对象
*/
protected transient ErrInfo errInfo;
public BizCommonException() {
super();
}
public BizCommonException(String message) {
super(message);
}
public BizCommonException(String message, Throwable cause) {
super(message, cause);
}
public BizCommonException setRestErrMsgArgs(String[] restErrMsgArgs) {
this.restErrMsgArgs = restErrMsgArgs;
return this;
}
public BizCommonException setErrInfo(ErrInfo errInfo) {
this.errInfo = errInfo;
return this;
}
public String[] getRestErrMsgArgs() {
return restErrMsgArgs;
}
public ErrInfo getErrInfo() {
return errInfo;
}
}
package com.zgiot.zx.workflow.base;
import org.apache.commons.collections4.CollectionUtils;
import java.util.List;
/**
* 所有错误消息编码
* 某一个异常可以对应一个错误编码
* 对应消息参考/config/i18n/messages*.properties
*/
public enum ErrCode {
///////////////////////////////////////////
/////////// 通用错误 ////////////////////
///////////////////////////////////////////
M0000("M0000"),//成功
M0001("M0001"),//不完全成功
M0005("M0005"),//无权限访问
///////////////////////////////////////////
/////////// 客户端错误 ///////////////////
///////////////////////////////////////////
M4000("M4000"),
M4001("M4001"),
///////////////////////////////////////////
/////////// 服务端错误 ///////////////////
///////////////////////////////////////////
M5000("M5000"),//服务器出现其他RuntimeException, 代码问题
M5001("M5001"),//service级别的Validation错误
M5002("M5002"),//抛出的继承了 IBizException 的异常, 但是没有对应的 errcode 做对应
M5004("M5004", ResultMoreThanOneException.class),//数据异常
;
////////////////////////////////////////////////////////////////
private String code; //错误编码
private Class<? extends IBizException> ex;
public static List<ErrCodeBean> customErrCodeList;
ErrCode(String code) {
this.code = code;
}
ErrCode(String code, Class<? extends IBizException> ex) {
this.code = code;
this.ex = ex;
}
/**
* 根据异常来获取当前ErrCode
*
* @param exception
* @return
*/
public static ErrCodeBean get(IBizException exception) {
Class<? extends IBizException> clazz = exception.getClass();
ErrCodeBean ret = null;
// 1. 先找 ErrCode 内部声明的错误信息
for (ErrCode ec : values()) {
if (ec.ex == clazz) {
ret = new ErrCodeBean(ec.getCode(), ec.ex);
break;
}
}
// 2. 找 customErrCodeList 中声明的错误, 这是每个微服务启动时注入进来的
if (ret == null && CollectionUtils.isNotEmpty(customErrCodeList)) {
for (ErrCodeBean customErrCode : customErrCodeList) {
if(customErrCode.getEx() == clazz){
ret = new ErrCodeBean(customErrCode.getCode(), customErrCode.getEx());
break;
}
}
}
//3. 如果最终没找到, 则用 M5002 代替
if (ret == null) {
ret = new ErrCodeBean(ErrCode.M5002.code, ErrCode.M5002.ex);
}
return ret;
}
public String getCode() {
return code;
}
}
package com.zgiot.zx.workflow.base;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class ErrCodeBean {
private String code;
private Class<? extends IBizException> ex;
public ErrCodeBean(String code, Class<? extends IBizException> ex) {
this.code = code;
this.ex = ex;
}
}
package com.zgiot.zx.workflow.base;
import lombok.Getter;
import lombok.Setter;
/**
* @author David
*/
@Getter
@Setter
public class ErrInfo {
/**
* 发生错误时的对象
* 可以是一个String 如: id, 也可以是一个对象, 即一组参数
*/
protected Object errObj;
/**
* 造成错误的对象
* 如: 文件名已存在, 那么需要告诉用户是哪个文件id造成的重名
*/
protected Object causeErrObj;
public ErrInfo(Object errObj, Object causeErrObj) {
this.errObj = errObj;
this.causeErrObj = causeErrObj;
}
public ErrInfo setErrObj(Object errObj) {
this.errObj = errObj;
return this;
}
public ErrInfo setCauseErrObj(Object causeErrObj) {
this.causeErrObj = causeErrObj;
return this;
}
}
package com.zgiot.zx.workflow.base; /** * 所有自定义异常都实现这个接口 * 方便统一处理异常程序知道哪些是自定义业务异常 */public interface IBizException {}
\ No newline at end of file
package com.zgiot.zx.workflow.base;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
/**
* 请求上下文
* 主要用来生成/获取请求id等信息
* <p>
* 访问controller时生成
* controller在return时候获取
* Created by yc on 2017/3/28.
*/
public class RequestContext {
private static ThreadLocal<RequestInfo> requestInfoTheadLocal = new ThreadLocal<>();
private RequestContext(){}
/**
* 生成并设置
*
* @return
*/
public static void setRequestInfo(RequestInfo requestInfo) {
if(requestInfo == null){
throw new BizCommonCheckException("requestInfo is null");
}
requestInfoTheadLocal.remove();
long requestId = IdWorker.getId();
requestInfo.setRequestId(requestId);
requestInfoTheadLocal.set(requestInfo);
}
/**
* 获取
*
* @return
*/
public static RequestInfo getRequestInfo() {
return requestInfoTheadLocal.get();
}
/**
* 清除
*/
public static void clear() {
requestInfoTheadLocal.remove();
}
}
package com.zgiot.zx.workflow.base;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
@Getter
@Setter
@NoArgsConstructor
public class RequestInfo implements Serializable {
private static final long serialVersionUID = 1L;
private long requestId;
}
package com.zgiot.zx.workflow.base;
/**
* 返回信息
*
* @author David
*/
public class ResponseMessage<T> {
private String respCode;
private String respMsg;
private T data;
private boolean ok;
public ResponseMessage() {
}
public ResponseMessage(String respCode, String message) {
this.respCode = respCode;
this.respMsg = message;
this.ok = true;
}
public ResponseMessage(String respCode, String message, boolean ok) {
this.respCode = respCode;
this.respMsg = message;
this.ok = ok;
}
public ResponseMessage(String respCode, String message, boolean ok, T data) {
this.respCode = respCode;
this.respMsg = message;
this.ok = ok;
this.data = data;
}
public String getRespCode() {
return this.respCode;
}
public void setRespCode(String respCode) {
this.respCode = respCode;
}
public String getMessage() {
return this.respMsg;
}
public void setMessage(String message) {
this.respMsg = message;
}
public T getData() {
return this.data;
}
public void setData(T data) {
this.data = data;
}
public boolean isOk() {
return this.ok;
}
}
package com.zgiot.zx.workflow.base;
/**
* 返回状态
*
* @author David
*/
public enum ResponseMessageCodeEnum {
/**
* 成功
*/
SUCCESS("0"),
/**
* 失败
*/
ERROR("-1");
private String code;
ResponseMessageCodeEnum(String code) {
this.code = code;
}
public String getCode() {
return this.code;
}
}
package com.zgiot.zx.workflow.base;
/**
* 返回信息
*
* @author David
*/
public class Result {
private Result() {
}
public static ResponseMessage success() {
return new ResponseMessage(ResponseMessageCodeEnum.SUCCESS.getCode(), "", true);
}
public static <T> ResponseMessage<T> success(String code, T t) {
return new ResponseMessage(code, "", true, t);
}
public static <T> ResponseMessage<T> success(String code, String message) {
return new ResponseMessage(code, message);
}
public static <T> ResponseMessage<T> success(String code, String message, T t) {
return new ResponseMessage(code, message, true, t);
}
public static <T> ResponseMessage<T> success(T t) {
return new ResponseMessage(ResponseMessageCodeEnum.SUCCESS.getCode(), "", true, t);
}
public static ResponseMessage error() {
return error("");
}
public static ResponseMessage error(String message) {
return error(ResponseMessageCodeEnum.ERROR.getCode(), message);
}
public static ResponseMessage error(String code, String message) {
return error(code, message, (Object)null);
}
public static <T> ResponseMessage<T> error(String code, String message, T t) {
return new ResponseMessage(code, message, false, t);
}
}
package com.zgiot.zx.workflow.base;
/**
* 查询到的结果应该是一条, 实际多条
* 请查看表数据异常
*/
public class ResultMoreThanOneException extends BizCommonException {
public ResultMoreThanOneException() {
}
public ResultMoreThanOneException(String message) {
super(message);
}
public ResultMoreThanOneException(String message, Throwable cause) {
super(message, cause);
}
}
package com.zgiot.zx.workflow.base;
import com.google.common.base.MoreObjects;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.core.annotation.Order;
import java.io.Serializable;
/**
* 返回信息
*
* @author David
*/
@ApiModel(value = "请求响应")
public class Ret<T> implements Serializable {
@Order(1)
@ApiModelProperty(value = "错误码")
private String code;
@Order(2)
@ApiModelProperty(value = "错误描述")
private String msg;
@Order(3)
@ApiModelProperty(value = "请求时间")
private Long ctime;
@Order(4)
@ApiModelProperty(value = "请求编号")
private String requestID;
@Order(5)
@ApiModelProperty(value = "响应数据")
private T data;
public Ret() {
this.ctime = System.currentTimeMillis();
if (RequestContext.getRequestInfo() != null) {
this.requestID = String.valueOf(RequestContext.getRequestInfo().getRequestId());
}
}
public Ret(String code) {
this.code = code;
this.ctime = System.currentTimeMillis();
if (RequestContext.getRequestInfo() != null) {
this.requestID = String.valueOf(RequestContext.getRequestInfo().getRequestId());
}
}
public Ret(String code, String msg) {
this.code = code;
this.msg = msg;
this.ctime = System.currentTimeMillis();
if (RequestContext.getRequestInfo() != null) {
this.requestID = String.valueOf(RequestContext.getRequestInfo().getRequestId());
}
}
//构建成功返回
public static Ret ok() {
return new Ret(ErrCode.M0000.getCode(), "ok");
}
//构建系统异常返回
public static Ret error() {
return new Ret();
}
public String getCode() {
return code;
}
public Ret<T> setCode(String code) {
this.code = code;
return this;
}
public String getMsg() {
return msg;
}
public Ret<T> setMsg(String msg) {
this.msg = msg;
return this;
}
public Long getCtime() {
return ctime;
}
public Ret<T> setCtime(Long ctime) {
this.ctime = ctime;
return this;
}
public String getRequestID() {
return requestID;
}
public Ret<T> setRequestID(String requestID) {
this.requestID = requestID;
return this;
}
public T getData() {
return data;
}
public Ret<T> setData(T data) {
this.data = data;
return this;
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
.add("\ncode", code)
.add("\nmsg", msg)
.add("\nctime", ctime)
.add("\nrequestID", requestID)
.add("\ndata", data)
.toString();
}
}
package com.zgiot.zx.workflow.config;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
/**
* 跨域配置
* @author David
*/
@Configuration
public class CorsConfig {
@Bean
public FilterRegistrationBean corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.addAllowedOrigin("*");
config.addAllowedHeader("*");
config.addAllowedMethod("OPTION");
config.addAllowedMethod("GET");
config.addAllowedMethod("POST");
config.addAllowedMethod("PUT");
config.addAllowedMethod("HEAD");
config.addAllowedMethod("DELETE");
source.registerCorsConfiguration("/**", config);
FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
bean.setOrder(0);
return bean;
}
@Bean
public WebMvcConfigurer mvcConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedMethods("GET", "PUT", "POST", "GET", "OPTIONS");
}
};
}
}
\ No newline at end of file
package com.zgiot.zx.workflow.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* MybatisPlus配置
* @author David
*/
@Configuration
public class MybatisPlusConfig {
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
package com.zgiot.zx.workflow.config;
import okhttp3.ConnectionPool;
import okhttp3.OkHttpClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.concurrent.TimeUnit;
/**
* OkHttp 配置
*
* @author David
* */
@Configuration
public class OkHttpConfig {
@Bean
public X509TrustManager x509TrustManager() {
return new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
};
}
@Bean
public SSLSocketFactory sslSocketFactory() {
try {
//信任任何链接
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, new TrustManager[]{x509TrustManager()}, new SecureRandom());
return sslContext.getSocketFactory();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyManagementException e) {
e.printStackTrace();
}
return null;
}
/**
* Create a new connection pool with tuning parameters appropriate for a single-user application.
* The tuning parameters in this pool are subject to change in future OkHttp releases. Currently
*/
@Bean
public ConnectionPool pool() {
return new ConnectionPool(200, 5, TimeUnit.MINUTES);
}
@Bean
public OkHttpClient okHttpClient() {
return new OkHttpClient.Builder()
.sslSocketFactory(sslSocketFactory(), x509TrustManager())
.retryOnConnectionFailure(false)//是否开启缓存
.connectionPool(pool())//连接池
.connectTimeout(10L, TimeUnit.SECONDS)
.readTimeout(10L, TimeUnit.SECONDS)
.build();
}
}
package com.zgiot.zx.workflow.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* Swagger2配置类
* @author David
*/
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.zgiot.zx.workflow"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("任务模块 RESTful APIs")
.description("任务模块接口API文档")
.termsOfServiceUrl("http://localhost:8080/")
.version("1.0")
.build();
}
}
package com.zgiot.zx.workflow.controller;
import com.zgiot.zx.workflow.base.Ret;
import com.zgiot.zx.workflow.dto.MTRoleGroupInfoRspDTO;
import com.zgiot.zx.workflow.utils.MTCotactApiRequestClient;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* <p>
* 前端控制器
* </p>
*
* @author jobob
* @since 2019-05-22
*/
@RestController
@RequestMapping("/task/tb-role")
public class RoleController {
/* @Autowired
ITbRoleService tbRoleService;
@Autowired
IWorkTemplateService workTemplateService;*/
@Autowired
private MTCotactApiRequestClient cotactApiRequestClient;
/**
*
* 查询角色
*/
@GetMapping("/getRoleAll")
@ApiOperation(value="查询角色")
public Ret<List<MTRoleGroupInfoRspDTO>> getRoleAll(){
return Ret.ok().setData(cotactApiRequestClient.roleListRoleGroup("6", ""));
}
/**
*
* 通过模板查询角色
*//*
@GetMapping("/getRoleByTempId")
@ApiOperation(value="通过模板查询角色")
public ResponseMessage getRoleByTempId(String templateId){
List<TbRole> rolesList = tbRoleService.list();
QueryWrapper qw = new QueryWrapper();
qw.eq("id",templateId);
TemplateDO templateDO = workTemplateService.getById(templateId);
Map<String,Object> map = new HashMap();
if(templateDO !=null && StrUtil.isNotEmpty(templateDO.getCreateRoles())){
map.put("list", templateDO.getCreateRoles());
}else {
map.put("list", "");
}
map.put("allList",rolesList);
return Result.success(map);
}*/
}
package com.zgiot.zx.workflow.controller;
import com.zgiot.zx.workflow.base.ResponseMessage;
import com.zgiot.zx.workflow.base.Result;
import com.zgiot.zx.workflow.base.Ret;
import com.zgiot.zx.workflow.utils.MTCotactApiRequestClient;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <p>
* 前端控制器
* </p>
*
* @author jobob
* @since 2019-05-22
*/
@RestController
@RequestMapping("/task/tb-user")
public class UserController {
/* @Autowired
private ITbUserService userService;*/
@Autowired
private MTCotactApiRequestClient mtCotactApiRequestClient;
/* *//**
* 查询用户
*//*
@GetMapping("/getUserAll")
@ApiOperation(value = "查询用户")
public ResponseMessage getUserAll() {
List<TbUser> usersList = userService.list();
return Result.success(usersList);
}
*/
/**
* 根据公司id获取部门tree
*/
@GetMapping("/getDeptTree")
@ApiOperation(value = "根据公司id获取部门tree")
public Ret<Map<String, Object>> getDeptTree(String corpId) {
return Ret.ok().setData(mtCotactApiRequestClient.deptGetTreeByCorpId("", ""));
}
/* *//**
* 根据部门id和公司id查询用户
*//*
@GetMapping("/getUserByDeptId")
@ApiOperation(value = "根据部门id和公司id查询用户")
public Ret<List<MTGetUserByDeptIdsRspDTO>> getDeptTree(String corpId, String deptId) {
List<String> deptIds = new ArrayList<>();
deptIds.add(deptId);
return Ret.ok().setData(mtCotactApiRequestClient.userGetUserByDeptIds(corpId, deptIds, ""));
}
*//**
* 根据部门id和公司id查询用户
*//*
@GetMapping("/deptSubDeptUserPageList")
@ApiOperation(value = "根据部门id和公司id查询下级部门")
public Ret<Map<String, Object>> deptSubDeptUserPageList(String corpId, String pid, String accessToken) {
Map<String, Object> resultMap = new HashMap<>(2);
MTDeptSubDeptUserPagelistRspDTO mtDeptSubDeptUserPagelistRspDTO = mtCotactApiRequestClient.deptSubDeptUserPagelist(corpId, pid, "");
if(mtDeptSubDeptUserPagelistRspDTO != null && mtDeptSubDeptUserPagelistRspDTO.getList() != null) {
List<String> deptIds = new ArrayList<>();
for(MTDeptSubDeptUserPagelistRspDTO.Dept dept : mtDeptSubDeptUserPagelistRspDTO.getList()) {
deptIds.add(dept.getId());
}
List<MTGetUserByDeptIdsRspDTO> mtGetUserByDeptIdsRspDTO = mtCotactApiRequestClient.userGetUserByDeptIds(corpId, deptIds, "");
resultMap.put("deptList", mtDeptSubDeptUserPagelistRspDTO.getList());
resultMap.put("userList", mtGetUserByDeptIdsRspDTO);
} else {
resultMap.put("deptList", new ArrayList<>());
resultMap.put("userList", new ArrayList<>());
}
return Ret.ok().setData(resultMap);
}
*/
}
package com.zgiot.zx.workflow.controller;
import com.zgiot.zx.workflow.base.Ret;
import com.zgiot.zx.workflow.dto.WorkTemplateResDTO;
import com.zgiot.zx.workflow.entity.TemplateDO;
import com.zgiot.zx.workflow.service.IWorkTemplateService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
/**
* <p>
* 前端控制器
* </p>
*
* @author jobob
* @since 2019-05-08
*/
@Slf4j
@RestController
@RequestMapping("/task/work-template")
public class WorkTemplateController {
@Autowired
private IWorkTemplateService workTemplateService;
/*
@Autowired
private IWorkTemplateFieldService workTemplateFieldService;
@Autowired
private RepositoryService repositoryService;
@Autowired
private IProcessFileService iProcessFileService;
@Autowired
private IWorkPermissionService workPermissionService;
@Autowired
private IWorkApproveService workApproveService;
@Autowired
private IWorkTemplateOtherSettingsService workTemplateOtherSettingsService;
@Autowired
private IProcessGatewayService processGatewayService;*/
/* @Value("${template.processfile.path}")
private String processPath;
Logger logger = LoggerFactory.getLogger(ProcessFileServiceImpl.class);
private static final String TEMPLATE_ID = "TEMPLATE_ID";*/
/* *//**
* 按id查询
*//*
@GetMapping("/getTemplateById")
@ApiOperation(value = "按id查询一条数据")
public Ret<TemplateDO> getTemplateById(@RequestParam String id) {
return Ret.ok().setData(workTemplateService.getById(id));
}*/
/* *//**
* 插入一条数据
*//*
@PostMapping("/insertOne")
@ApiOperation(value = "新建模板生成id")
public Ret insertOne(@RequestBody TemplateDO templateDO) {
if (workTemplateService.saveTemplateService(templateDO)) {
return Ret.ok().setData(templateDO);
} else {
return Ret.error().setMsg("插入异常");
}
}*/
/* *//**
* 按id删除一条数据
*//*
@DeleteMapping("/deleteOne/{id}")
@ApiOperation(value = "按id删除一条数据")
public Ret deleteOne(@PathVariable Integer id) {
if (workTemplateService.removeById(id)) {
return Ret.ok().setMsg("删除成功");
}
return Ret.error().setMsg("删除失败");
}*/
/* *//**
* 修改一条数据
*//*
@PutMapping("/updateOne")
@ApiOperation(value = "修改一条数据")
public Ret updateOne(@RequestBody TemplateDO templateDO) {
if (templateDO.getId() != null) {
templateDO.setUpdateTime(new Date());
if (workTemplateService.updateById(templateDO)) {
return Ret.ok().setMsg("修改成功");
}
return Ret.error().setMsg("修改失败");
}
return Ret.error().setMsg("缺少id");
}*/
/*
* 发布数据
* */
@PostMapping("/publish")
@ApiOperation(value = "发布数据")
public Ret publishOne(@RequestBody TemplateDO templateDo) {
//System.out.println("模板id:"+templateDo.getId());
if (templateDo.getId() != null) {
if (workTemplateService.publishBytemplate(templateDo)) {
return Ret.ok().setMsg("发布成功");
}
return Ret.error().setMsg("发布失败");
}
return Ret.error().setMsg("缺少id");
}
/* *//**
* 条件查询多条数据
*//*
@GetMapping("/")
@ApiOperation(value = "条件查询多条数据")
public Ret<List<TemplateDO>> searchSelective(TemplateDO templateDO) {
return Ret.ok().setData(workTemplateService.getTemplateList(templateDO));
}
*/
/* *//**
* 条件查询多条数据(分页)
*//*
@GetMapping("/page")
@ApiOperation(value = "条件查询多条数据(分页)")
public Ret<IPage<TemplateDO>> searchSelectiveByPage(TemplateDO templateDO, Integer page, Integer size) {
return Ret.ok().setData(workTemplateService.getTemplatePage(templateDO,page,size));
}
*/
@GetMapping("/getAllTemplates")
@ApiOperation(value = "获取所有的模板数据[带分类]")
@ApiImplicitParams({
@ApiImplicitParam(name = "ifEnable", value = "是否启用(1:是;0:否)", required = true),
@ApiImplicitParam(name = "ifPhone", value = "是否手机端创建(1:是;0:否)", required = true)
})
public Ret getAllTemplates(String ifEnable, String ifPhone) {
return Ret.ok().setData(workTemplateService.getAllTemplates(ifEnable,ifPhone));
}
/*
@GetMapping("/getTemplatesByTp")
@ApiOperation(value = "根据模板分组查询模板")
public Ret getTemplatesByTp(String workTpId) {
QueryWrapper qw = new QueryWrapper();
qw.eq("work_tp_id",workTpId);
qw.eq("if_enable","1");
return Ret.ok().setData(workTemplateService.list(qw));
}*/
/* @GetMapping("/getTemplates")
@ApiOperation(value = "查询已发布模板")
public Ret getTemplates() {
QueryWrapper qw = new QueryWrapper();
qw.eq("if_enable","1");
return Ret.ok().setData(workTemplateService.list(qw));
}
*/
/**
* @param templateId 模板ID
* @return
*//*
@GetMapping("/deployProcess")
@ApiOperation(value = "部署流程文件")
public Ret deployProcess(String templateId) {
return workTemplateService.deployProcess(templateId);
}
*/
/**
* 查询模板所有信息(4个分类)
*/
@GetMapping("/queryTemplateByTemplateId")
@ApiOperation(value = "查询模板所有信息(4个分类)")
public Ret<WorkTemplateResDTO> queryTemplateByTemplateId(String templateId) {
return Ret.ok().setData(workTemplateService.getTemplateByTemplateId(templateId));
}
/**
* 保存模板信息
*/
@PostMapping("/saveTemplate")
@ApiOperation(value = "保存模板所有信息(4个分类)")
@ApiImplicitParams({
@ApiImplicitParam(name = "templateId", value = "模板Id", required = true),
@ApiImplicitParam(name = "templateDO", value = "模板基础信息", required = false),
@ApiImplicitParam(name = "fieldJsonStr", value = "表单信息json字符串", required = false),
@ApiImplicitParam(name = "xmlJson", value = "工作流文件字符串", required = false),
@ApiImplicitParam(name = "templateApproveDOList", value = "表单人员配置", required = false),
@ApiImplicitParam(name = "permissionJson", value = "表单权限配置json", required = false),
@ApiImplicitParam(name = "processGatewayList", value = "流程表达式", required = false),
@ApiImplicitParam(name = "templateOtherSettings", value = "模板其他设置", required = false)
})
public Ret saveTemplate(@RequestBody WorkTemplateResDTO workTemplateResDTO) {
return workTemplateService.saveTemplateAll(workTemplateResDTO);
}
/**
* 删除模板
*//*
@DeleteMapping("/removeTemplate{id}")
@ApiOperation(value = "删除模板")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "模板Id", required = true),
})
public Ret removeTemplate(@PathVariable String id){
if(!workTemplateService.removeTemplate(id)){
return Ret.error().setMsg("删除失败");
}
return Ret.ok().setMsg("删除成功");
}
*//**
* 模板复制
*//*
@PostMapping("/templateCopy")
@ApiOperation(value = "模板复制")
@ApiImplicitParams({
@ApiImplicitParam(name = "templateId", value = "模板Id", required = true),
@ApiImplicitParam(name = "workTpId", value = "分类id", required = true)
})
public Ret templateCopy(String templateId, String workTpId) {
boolean flag = workTemplateService.templateCopy(templateId, workTpId);
if (!flag) {
return Ret.error().setMsg("复制失败");
}
return Ret.ok().setMsg("复制成功");
}
*//**
* 模板移动
*//*
@PostMapping("/templateMove")
@ApiOperation(value = "模板移动")
@ApiImplicitParams({
@ApiImplicitParam(name = "templateId", value = "模板Id", required = true),
@ApiImplicitParam(name = "workTpId", value = "分类id", required = true)
})
public Ret templateMove(String templateId, String workTpId) {
if (!workTemplateService.updateTemplateMove(templateId,workTpId)) {
return Ret.error().setMsg("移动失败");
}
return Ret.ok().setMsg("移动成功");
}
*/
}
package com.zgiot.zx.workflow.controller;
import com.zgiot.zx.workflow.base.Ret;
import com.zgiot.zx.workflow.dto.WorkTemplateResDTO;
import com.zgiot.zx.workflow.service.WorkflowTaskService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author: jiangpengpeng
* @Description:
* @Date: Created in 18:27 2019/7/29
* @Modified By:
*/
@RestController
@RequestMapping("/workflowTask")
public class WorkflowTaskControl {
@Autowired
private WorkflowTaskService workflowTaskService;
@GetMapping("/getAllWorkTasks")
@ApiOperation(value = "获取所有的工单带分类")
public Ret getAllTemplates() {
return Ret.ok().setData(workflowTaskService.getAllWorkflowTask());
}
}
\ No newline at end of file
package com.zgiot.zx.workflow.dto;
import com.zgiot.zx.workflow.entity.TemplateApproveDO;
import com.zgiot.zx.workflow.entity.TemplateGatewayDO;
import lombok.Data;
import java.util.List;
/**
*
*/
@Data
public class ActivitiResDTO {
private String xmlPath;
private List<WorkPermissionInfoResDTO> workPermission;
private List<TemplateApproveDO> workApproveList;
private List<TemplateGatewayDO> processGatewayList;
}
package com.zgiot.zx.workflow.dto;
import com.zgiot.zx.workflow.entity.SDept;
import com.zgiot.zx.workflow.entity.SUser;
import java.util.List;
public class MTDeptTreeUserInfoRspDTO {
private SDept sDept;
/* private List<SUser> sUsers;
public List<SUser> getsUsers() {
return sUsers;
}
public void setsUsers(List<SUser> sUsers) {
this.sUsers = sUsers;
}*/
public SDept getsDept() {
return sDept;
}
public void setsDept(SDept sDept) {
this.sDept = sDept;
}
private String deptName;
private String[] childIds;
private List<MTDeptTreeUserInfoRspDTO> childDeptTreeResDTOS;
private List<UserInfo> userInfoList;
private String deptId;
private String pid;
public class UserInfo {
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public String[] getChildIds() {
return childIds;
}
public void setChildIds(String[] childIds) {
this.childIds = childIds;
}
public List<MTDeptTreeUserInfoRspDTO> getChildDeptTreeResDTOS() {
return childDeptTreeResDTOS;
}
public void setChildDeptTreeResDTOS(List<MTDeptTreeUserInfoRspDTO> childDeptTreeResDTOS) {
this.childDeptTreeResDTOS = childDeptTreeResDTOS;
}
public List<UserInfo> getUserInfoList() {
return userInfoList;
}
public void setUserInfoList(List<UserInfo> userInfoList) {
this.userInfoList = userInfoList;
}
public String getDeptId() {
return deptId;
}
public void setDeptId(String deptId) {
this.deptId = deptId;
}
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
}
package com.zgiot.zx.workflow.dto;
import java.util.List;
/**
* 模糊查询设备返回实体类
*/
public class MTEquipmentInfoRspDTO {
/**
* corpId : 1115912149559242754
* createTime : 1560128487000
* createUser : 122,1115912149777346561
* equipmentCode : 3123
* equipmentSpatial : {"canDelete":1,"createTime":1559805649000,"createUserUuid":"122,1115912149777346561","equipmentProperties":[{"dimCode":"spatial_position","flag":false,"id":693,"isEnable":1,"propName":"x","propUuid":"xxxx","value":"11"},{"dimCode":"spatial_position","flag":false,"id":694,"isEnable":1,"propName":"y","propUuid":"yyyy","value":"200000"}],"id":41,"isEnable":1,"spaCode":"2343rrfd","spaName":"位置定义-位置类型5月31日","spaUuid":"spatial_position3d115ac1-5188-42e1-b48f-2703b0586d0b20190531151112","updateTime":1559805649000,"updateUserUuid":"122"}
* equipmentName : 6月10日
* equipmentNote : 11
* equipmentUuid : equipmentb5503f61-52bd-439d-9a3b-b63963ac111e20190610090127
* id : 59
* manufacturerUuid : 6acda105-e05c-4804-a97e-ec920e348d0d20190531151029
* organizationCode : 1131501803793387522
* organizationCodeList : ["1131501803793387522"]
* principalsUuid : 1122684757018251265,1122684867965980673
* principalsUuidList : ["1122684757018251265","1122684867965980673"]
* specifications : 434
* status : 1
* tagUid :
* updateTime : 1560128487000
* useTime : 1561564800000
*/
private String corpId;
private long createTime;
private String createUser;
private String equipmentCode;
private EquipmentSpatialBean equipmentSpatial;
private String equipmentName;
private String equipmentNote;
private String equipmentUuid;
private int id;
private String manufacturerUuid;
private String organizationCode;
private String principalsUuid;
private String specifications;
private int status;
private String tagUid;
private long updateTime;
private long useTime;
private List<String> organizationCodeList;
private List<String> principalsUuidList;
public String getCorpId() {
return corpId;
}
public void setCorpId(String corpId) {
this.corpId = corpId;
}
public long getCreateTime() {
return createTime;
}
public void setCreateTime(long createTime) {
this.createTime = createTime;
}
public String getCreateUser() {
return createUser;
}
public void setCreateUser(String createUser) {
this.createUser = createUser;
}
public String getEquipmentCode() {
return equipmentCode;
}
public void setEquipmentCode(String equipmentCode) {
this.equipmentCode = equipmentCode;
}
public EquipmentSpatialBean getEquipmentSpatial() {
return equipmentSpatial;
}
public void setEquipmentSpatial(EquipmentSpatialBean equipmentSpatial) {
this.equipmentSpatial = equipmentSpatial;
}
public String getEquipmentName() {
return equipmentName;
}
public void setEquipmentName(String equipmentName) {
this.equipmentName = equipmentName;
}
public String getEquipmentNote() {
return equipmentNote;
}
public void setEquipmentNote(String equipmentNote) {
this.equipmentNote = equipmentNote;
}
public String getEquipmentUuid() {
return equipmentUuid;
}
public void setEquipmentUuid(String equipmentUuid) {
this.equipmentUuid = equipmentUuid;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getManufacturerUuid() {
return manufacturerUuid;
}
public void setManufacturerUuid(String manufacturerUuid) {
this.manufacturerUuid = manufacturerUuid;
}
public String getOrganizationCode() {
return organizationCode;
}
public void setOrganizationCode(String organizationCode) {
this.organizationCode = organizationCode;
}
public String getPrincipalsUuid() {
return principalsUuid;
}
public void setPrincipalsUuid(String principalsUuid) {
this.principalsUuid = principalsUuid;
}
public String getSpecifications() {
return specifications;
}
public void setSpecifications(String specifications) {
this.specifications = specifications;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getTagUid() {
return tagUid;
}
public void setTagUid(String tagUid) {
this.tagUid = tagUid;
}
public long getUpdateTime() {
return updateTime;
}
public void setUpdateTime(long updateTime) {
this.updateTime = updateTime;
}
public long getUseTime() {
return useTime;
}
public void setUseTime(long useTime) {
this.useTime = useTime;
}
public List<String> getOrganizationCodeList() {
return organizationCodeList;
}
public void setOrganizationCodeList(List<String> organizationCodeList) {
this.organizationCodeList = organizationCodeList;
}
public List<String> getPrincipalsUuidList() {
return principalsUuidList;
}
public void setPrincipalsUuidList(List<String> principalsUuidList) {
this.principalsUuidList = principalsUuidList;
}
public static class EquipmentSpatialBean {
/**
* canDelete : 1
* createTime : 1559805649000
* createUserUuid : 122,1115912149777346561
* equipmentProperties : [{"dimCode":"spatial_position","flag":false,"id":693,"isEnable":1,"propName":"x","propUuid":"xxxx","value":"11"},{"dimCode":"spatial_position","flag":false,"id":694,"isEnable":1,"propName":"y","propUuid":"yyyy","value":"200000"}]
* id : 41
* isEnable : 1
* spaCode : 2343rrfd
* spaName : 位置定义-位置类型5月31日
* spaUuid : spatial_position3d115ac1-5188-42e1-b48f-2703b0586d0b20190531151112
* updateTime : 1559805649000
* updateUserUuid : 122
*/
private int canDelete;
private long createTime;
private String createUserUuid;
private int id;
private int isEnable;
private String spaCode;
private String spaName;
private String spaUuid;
private long updateTime;
private String updateUserUuid;
private List<EquipmentPropertiesBean> equipmentProperties;
public int getCanDelete() {
return canDelete;
}
public void setCanDelete(int canDelete) {
this.canDelete = canDelete;
}
public long getCreateTime() {
return createTime;
}
public void setCreateTime(long createTime) {
this.createTime = createTime;
}
public String getCreateUserUuid() {
return createUserUuid;
}
public void setCreateUserUuid(String createUserUuid) {
this.createUserUuid = createUserUuid;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getIsEnable() {
return isEnable;
}
public void setIsEnable(int isEnable) {
this.isEnable = isEnable;
}
public String getSpaCode() {
return spaCode;
}
public void setSpaCode(String spaCode) {
this.spaCode = spaCode;
}
public String getSpaName() {
return spaName;
}
public void setSpaName(String spaName) {
this.spaName = spaName;
}
public String getSpaUuid() {
return spaUuid;
}
public void setSpaUuid(String spaUuid) {
this.spaUuid = spaUuid;
}
public long getUpdateTime() {
return updateTime;
}
public void setUpdateTime(long updateTime) {
this.updateTime = updateTime;
}
public String getUpdateUserUuid() {
return updateUserUuid;
}
public void setUpdateUserUuid(String updateUserUuid) {
this.updateUserUuid = updateUserUuid;
}
public List<EquipmentPropertiesBean> getEquipmentProperties() {
return equipmentProperties;
}
public void setEquipmentProperties(List<EquipmentPropertiesBean> equipmentProperties) {
this.equipmentProperties = equipmentProperties;
}
public static class EquipmentPropertiesBean {
/**
* dimCode : spatial_position
* flag : false
* id : 693
* isEnable : 1
* propName : x
* propUuid : xxxx
* value : 11
*/
private String dimCode;
private boolean flag;
private int id;
private int isEnable;
private String propName;
private String propUuid;
private String value;
public String getDimCode() {
return dimCode;
}
public void setDimCode(String dimCode) {
this.dimCode = dimCode;
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getIsEnable() {
return isEnable;
}
public void setIsEnable(int isEnable) {
this.isEnable = isEnable;
}
public String getPropName() {
return propName;
}
public void setPropName(String propName) {
this.propName = propName;
}
public String getPropUuid() {
return propUuid;
}
public void setPropUuid(String propUuid) {
this.propUuid = propUuid;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
}
}
package com.zgiot.zx.workflow.dto;
import lombok.Data;
import java.util.Map;
@Data
public class MTLogReqDTO {
private String content;
private String cropId;
private String eventCode;
private String eventName;
private String moduleCode;
private String moduleName;
private Integer optDuration;
private String platform;
private String properties;
private Map<String, Object> propertyMap;
private String userUuid;
private String userZxId;
}
package com.zgiot.zx.workflow.dto;
import lombok.Builder;
import lombok.Data;
import java.util.List;
import java.util.Map;
/**
* 通知实体类
* @author David
*/
@Data
@Builder
public class MTNotificationSendReqDTO {
/**
* 通知标题
*/
private String title;
/**
* 通知内容
*/
private String content;
/**
* 发送通道,全部通道为ALL, 这个分类应该是一个固定值,暂时写成ALL
*/
private String channels;
/**
* 发送人id,非必须
*/
private String senderId;
/**
* 发送人名称
*/
private String senderName;
/**
* 外部id,对应各自服务中的id,需要保证同一个通知分类下的唯一性,可以用来统计和修改已读状态
* 用来存咱自己的发送id
*/
private String targetId;
/**
* 通知分类列表,这个值应该是一个固定值 TASK
*/
private List<String> categoryCodes;
/**
* receiverIds
*/
private List<String> receiverIds;
/**
* 自定义属性map,key和value都是字符串类型
*/
private Map<String, String> properties;
}
package com.zgiot.zx.workflow.dto;
import lombok.Data;
@Data
public class MTOssRspDTO {
/**
* id : 1139435917065326594
* md5 : 7431DFB4AA154BAF6D1F980BEF751C94
* url : https://zx-zgiot-002.oss-cn-qingdao.aliyuncs.com/image/37ec5b2b8ae840f1bf74d0b9fe3af2fa.png
* fileSize : 21917
* fileType : png
* originalName : 005DKY27gy6JnNcf3qVf9&amp.png
*/
private String id;
private String md5;
private String url;
private Integer fileSize;
private String fileType;
private String originalName;
}
package com.zgiot.zx.workflow.dto;
import com.zgiot.zx.workflow.entity.SRole;
import java.util.List;
public class MTRoleGroupInfoRspDTO {
/**
* id : 1128488217616879618
* name : 拜拜
* corpId : 6
* roles : [{"id":"1128488267411656706","name":"部长","corpId":6,"creator":null,"createAt":null,"updator":null,"updateAt":null,"rgid":"1128488267466182657"},{"id":"1128488322302513154","name":"事业部总经理","corpId":6,"creator":null,"createAt":null,"updator":null,"updateAt":null,"rgid":"1128488322373816322"},{"id":"1130685864499691521","name":"角色1","corpId":6,"creator":null,"createAt":null,"updator":null,"updateAt":null,"rgid":"1130685864529051650"},{"id":"1130685903745794049","name":"角色2","corpId":6,"creator":null,"createAt":null,"updator":null,"updateAt":null,"rgid":"1130685903749988354"},{"id":"1130685935211462657","name":"角色3","corpId":6,"creator":null,"createAt":null,"updator":null,"updateAt":null,"rgid":"1130685935219851265"},{"id":"1130685961195175937","name":"角色4","corpId":6,"creator":null,"createAt":null,"updator":null,"updateAt":null,"rgid":"1130685961203564546"},{"id":"1133639571700965377","name":"角色5","corpId":6,"creator":null,"createAt":null,"updator":null,"updateAt":null,"rgid":"1133639571705159681"}]
*/
private String id;
private String name;
private String corpId;
private List<RolesBean> roles;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCorpId() {
return corpId;
}
public void setCorpId(String corpId) {
this.corpId = corpId;
}
public List<RolesBean> getRoles() {
return roles;
}
public void setSRole(List<RolesBean> roles) {
this.roles = roles;
}
public static class RolesBean {
/**
* id : 1128488267411656706
* name : 部长
* corpId : 6
* creator : null
* createAt : null
* updator : null
* updateAt : null
* rgid : 1128488267466182657
*/
private String id;
private String name;
private int corpId;
private String creator;
private String createAt;
private String updator;
private String updateAt;
private String rgid;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getCorpId() {
return corpId;
}
public void setCorpId(int corpId) {
this.corpId = corpId;
}
public Object getCreator() {
return creator;
}
public void setCreator(String creator) {
this.creator = creator;
}
public String getCreateAt() {
return createAt;
}
public void setCreateAt(String createAt) {
this.createAt = createAt;
}
public String getUpdator() {
return updator;
}
public void setUpdator(String updator) {
this.updator = updator;
}
public String getUpdateAt() {
return updateAt;
}
public void setUpdateAt(String updateAt) {
this.updateAt = updateAt;
}
public String getRgid() {
return rgid;
}
public void setRgid(String rgid) {
this.rgid = rgid;
}
}
}
package com.zgiot.zx.workflow.dto;
import java.util.List;
public class MTUserInfoRspDTO {
/**
* id : 1042237494349766657
* corpId : 6
* outerId : null
* accountId : 290
* name : 任少龙
* mobile : 17694804822
* tel :
* email :
* status : 1
* jobNumber :
* workPlace :
* hiredDate : 1537286400000
* leaveDate : 1537286400000
* isHideMobile : 0
* remark :
* depts : [{"id":"197","corpId":"6","outerId":"张淑强","name":"美腾智冠信息事业部","pid":"1042237414280511489","pids":"0,1042237414280511489","isCreateImgroup":1,"sort":95,"isBiz":0,"path":[{"id":"1042237414280511489","corpId":"6","outerId":null,"name":"天津美腾科技有限公司","pid":"0","pids":"0","isCreateImgroup":0,"sort":0,"isBiz":0,"path":null,"managers":null,"userCnt":0,"creator":"1","createAt":1559009944000,"updator":"123","updateAt":1559009928000,"position":null,"flag":null,"group":null,"owner":null,"groupMembers":null},{"id":"197","corpId":"6","outerId":"张淑强","name":"美腾智冠信息事业部","pid":"1042237414280511489","pids":"0,1042237414280511489","isCreateImgroup":1,"sort":95,"isBiz":0,"path":null,"managers":null,"userCnt":0,"creator":"1","createAt":1559714861000,"updator":"123","updateAt":1559714413000,"position":null,"flag":null,"group":null,"owner":null,"groupMembers":null}],"managers":null,"userCnt":0,"creator":"1","createAt":1559714861000,"updator":"123","updateAt":1559714413000,"position":null,"flag":null,"group":null,"owner":null,"groupMembers":null}]
* imAccount : renshaolong_test
* creator : 1
* createAt : 1537323691000
* updator : 123
* updateAt : 1558325453000
* avatar : http://zx-zgiot-002.oss-cn-qingdao.aliyuncs.com/image/72d601089a1e41cba5cb87ad0c53eeb0.png
* roles : [{"id":"1128488322302513154","name":"事业部总经理","corpId":null,"creator":null,"createAt":null,"updator":null,"updateAt":null}]
* userSuperiorsInfo : {"id":"1042237477954232321","name":"李太友","mobile":"18802239698","tel":"","email":"","accountId":"133","status":1}
*/
private String id;
private int corpId;
private Object outerId;
private String accountId;
private String name;
private String mobile;
private String tel;
private String email;
private int status;
private String jobNumber;
private String workPlace;
private String hiredDate;
private long leaveDate;
private int isHideMobile;
private String remark;
private String imAccount;
private int creator;
private long createAt;
private int updator;
private long updateAt;
private String avatar;
private UserSuperiorsInfoBean userSuperiorsInfo;
private List<DeptsBean> depts;
private List<RolesBean> roles;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public int getCorpId() {
return corpId;
}
public void setCorpId(int corpId) {
this.corpId = corpId;
}
public Object getOuterId() {
return outerId;
}
public void setOuterId(Object outerId) {
this.outerId = outerId;
}
public String getAccountId() {
return accountId;
}
public void setAccountId(String accountId) {
this.accountId = accountId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getJobNumber() {
return jobNumber;
}
public void setJobNumber(String jobNumber) {
this.jobNumber = jobNumber;
}
public String getWorkPlace() {
return workPlace;
}
public void setWorkPlace(String workPlace) {
this.workPlace = workPlace;
}
public String getHiredDate() {
return hiredDate;
}
public void setHiredDate(String hiredDate) {
this.hiredDate = hiredDate;
}
public long getLeaveDate() {
return leaveDate;
}
public void setLeaveDate(long leaveDate) {
this.leaveDate = leaveDate;
}
public int getIsHideMobile() {
return isHideMobile;
}
public void setIsHideMobile(int isHideMobile) {
this.isHideMobile = isHideMobile;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public String getImAccount() {
return imAccount;
}
public void setImAccount(String imAccount) {
this.imAccount = imAccount;
}
public int getCreator() {
return creator;
}
public void setCreator(int creator) {
this.creator = creator;
}
public long getCreateAt() {
return createAt;
}
public void setCreateAt(long createAt) {
this.createAt = createAt;
}
public int getUpdator() {
return updator;
}
public void setUpdator(int updator) {
this.updator = updator;
}
public long getUpdateAt() {
return updateAt;
}
public void setUpdateAt(long updateAt) {
this.updateAt = updateAt;
}
public String getAvatar() {
return avatar;
}
public void setAvatar(String avatar) {
this.avatar = avatar;
}
public UserSuperiorsInfoBean getUserSuperiorsInfo() {
return userSuperiorsInfo;
}
public void setUserSuperiorsInfo(UserSuperiorsInfoBean userSuperiorsInfo) {
this.userSuperiorsInfo = userSuperiorsInfo;
}
public List<DeptsBean> getDepts() {
return depts;
}
public void setDepts(List<DeptsBean> depts) {
this.depts = depts;
}
public List<RolesBean> getRoles() {
return roles;
}
public void setRoles(List<RolesBean> roles) {
this.roles = roles;
}
public static class UserSuperiorsInfoBean {
/**
* id : 1042237477954232321
* name : 李太友
* mobile : 18802239698
* tel :
* email :
* accountId : 133
* status : 1
*/
private String id;
private String name;
private String mobile;
private String tel;
private String email;
private String accountId;
private int status;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getAccountId() {
return accountId;
}
public void setAccountId(String accountId) {
this.accountId = accountId;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
}
public static class DeptsBean {
/**
* id : 197
* corpId : 6
* outerId : 张淑强
* name : 美腾智冠信息事业部
* pid : 1042237414280511489
* pids : 0,1042237414280511489
* isCreateImgroup : 1
* sort : 95
* isBiz : 0
* path : [{"id":"1042237414280511489","corpId":"6","outerId":null,"name":"天津美腾科技有限公司","pid":"0","pids":"0","isCreateImgroup":0,"sort":0,"isBiz":0,"path":null,"managers":null,"userCnt":0,"creator":"1","createAt":1559009944000,"updator":"123","updateAt":1559009928000,"position":null,"flag":null,"group":null,"owner":null,"groupMembers":null},{"id":"197","corpId":"6","outerId":"张淑强","name":"美腾智冠信息事业部","pid":"1042237414280511489","pids":"0,1042237414280511489","isCreateImgroup":1,"sort":95,"isBiz":0,"path":null,"managers":null,"userCnt":0,"creator":"1","createAt":1559714861000,"updator":"123","updateAt":1559714413000,"position":null,"flag":null,"group":null,"owner":null,"groupMembers":null}]
* managers : null
* userCnt : 0
* creator : 1
* createAt : 1559714861000
* updator : 123
* updateAt : 1559714413000
* position : null
* flag : null
* group : null
* owner : null
* groupMembers : null
*/
private String id;
private String corpId;
private String outerId;
private String name;
private String pid;
private String pids;
private int isCreateImgroup;
private int sort;
private int isBiz;
private Object managers;
private int userCnt;
private String creator;
private long createAt;
private String updator;
private long updateAt;
private Object position;
private Object flag;
private Object group;
private Object owner;
private Object groupMembers;
private List<PathBean> path;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCorpId() {
return corpId;
}
public void setCorpId(String corpId) {
this.corpId = corpId;
}
public String getOuterId() {
return outerId;
}
public void setOuterId(String outerId) {
this.outerId = outerId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
public String getPids() {
return pids;
}
public void setPids(String pids) {
this.pids = pids;
}
public int getIsCreateImgroup() {
return isCreateImgroup;
}
public void setIsCreateImgroup(int isCreateImgroup) {
this.isCreateImgroup = isCreateImgroup;
}
public int getSort() {
return sort;
}
public void setSort(int sort) {
this.sort = sort;
}
public int getIsBiz() {
return isBiz;
}
public void setIsBiz(int isBiz) {
this.isBiz = isBiz;
}
public Object getManagers() {
return managers;
}
public void setManagers(Object managers) {
this.managers = managers;
}
public int getUserCnt() {
return userCnt;
}
public void setUserCnt(int userCnt) {
this.userCnt = userCnt;
}
public String getCreator() {
return creator;
}
public void setCreator(String creator) {
this.creator = creator;
}
public long getCreateAt() {
return createAt;
}
public void setCreateAt(long createAt) {
this.createAt = createAt;
}
public String getUpdator() {
return updator;
}
public void setUpdator(String updator) {
this.updator = updator;
}
public long getUpdateAt() {
return updateAt;
}
public void setUpdateAt(long updateAt) {
this.updateAt = updateAt;
}
public Object getPosition() {
return position;
}
public void setPosition(Object position) {
this.position = position;
}
public Object getFlag() {
return flag;
}
public void setFlag(Object flag) {
this.flag = flag;
}
public Object getGroup() {
return group;
}
public void setGroup(Object group) {
this.group = group;
}
public Object getOwner() {
return owner;
}
public void setOwner(Object owner) {
this.owner = owner;
}
public Object getGroupMembers() {
return groupMembers;
}
public void setGroupMembers(Object groupMembers) {
this.groupMembers = groupMembers;
}
public List<PathBean> getPath() {
return path;
}
public void setPath(List<PathBean> path) {
this.path = path;
}
public static class PathBean {
/**
* id : 1042237414280511489
* corpId : 6
* outerId : null
* name : 天津美腾科技有限公司
* pid : 0
* pids : 0
* isCreateImgroup : 0
* sort : 0
* isBiz : 0
* path : null
* managers : null
* userCnt : 0
* creator : 1
* createAt : 1559009944000
* updator : 123
* updateAt : 1559009928000
* position : null
* flag : null
* group : null
* owner : null
* groupMembers : null
*/
private String id;
private String corpId;
private Object outerId;
private String name;
private String pid;
private String pids;
private int isCreateImgroup;
private int sort;
private int isBiz;
private Object path;
private Object managers;
private int userCnt;
private String creator;
private long createAt;
private String updator;
private long updateAt;
private Object position;
private Object flag;
private Object group;
private Object owner;
private Object groupMembers;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCorpId() {
return corpId;
}
public void setCorpId(String corpId) {
this.corpId = corpId;
}
public Object getOuterId() {
return outerId;
}
public void setOuterId(Object outerId) {
this.outerId = outerId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
public String getPids() {
return pids;
}
public void setPids(String pids) {
this.pids = pids;
}
public int getIsCreateImgroup() {
return isCreateImgroup;
}
public void setIsCreateImgroup(int isCreateImgroup) {
this.isCreateImgroup = isCreateImgroup;
}
public int getSort() {
return sort;
}
public void setSort(int sort) {
this.sort = sort;
}
public int getIsBiz() {
return isBiz;
}
public void setIsBiz(int isBiz) {
this.isBiz = isBiz;
}
public Object getPath() {
return path;
}
public void setPath(Object path) {
this.path = path;
}
public Object getManagers() {
return managers;
}
public void setManagers(Object managers) {
this.managers = managers;
}
public int getUserCnt() {
return userCnt;
}
public void setUserCnt(int userCnt) {
this.userCnt = userCnt;
}
public String getCreator() {
return creator;
}
public void setCreator(String creator) {
this.creator = creator;
}
public long getCreateAt() {
return createAt;
}
public void setCreateAt(long createAt) {
this.createAt = createAt;
}
public String getUpdator() {
return updator;
}
public void setUpdator(String updator) {
this.updator = updator;
}
public long getUpdateAt() {
return updateAt;
}
public void setUpdateAt(long updateAt) {
this.updateAt = updateAt;
}
public Object getPosition() {
return position;
}
public void setPosition(Object position) {
this.position = position;
}
public Object getFlag() {
return flag;
}
public void setFlag(Object flag) {
this.flag = flag;
}
public Object getGroup() {
return group;
}
public void setGroup(Object group) {
this.group = group;
}
public Object getOwner() {
return owner;
}
public void setOwner(Object owner) {
this.owner = owner;
}
public Object getGroupMembers() {
return groupMembers;
}
public void setGroupMembers(Object groupMembers) {
this.groupMembers = groupMembers;
}
}
}
public static class RolesBean {
/**
* id : 1128488322302513154
* name : 事业部总经理
* corpId : null
* creator : null
* createAt : null
* updator : null
* updateAt : null
*/
private String id;
private String name;
private Object corpId;
private Object creator;
private Object createAt;
private Object updator;
private Object updateAt;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Object getCorpId() {
return corpId;
}
public void setCorpId(Object corpId) {
this.corpId = corpId;
}
public Object getCreator() {
return creator;
}
public void setCreator(Object creator) {
this.creator = creator;
}
public Object getCreateAt() {
return createAt;
}
public void setCreateAt(Object createAt) {
this.createAt = createAt;
}
public Object getUpdator() {
return updator;
}
public void setUpdator(Object updator) {
this.updator = updator;
}
public Object getUpdateAt() {
return updateAt;
}
public void setUpdateAt(Object updateAt) {
this.updateAt = updateAt;
}
}
}
package com.zgiot.zx.workflow.dto;
import com.zgiot.zx.workflow.entity.TemplateDO;
import com.zgiot.zx.workflow.entity.WorkflowTask;
import lombok.Data;
import java.util.List;
/**
*
*/
@Data
public class TemplateTypeResDTO {
private List<TemplateDO> templateList;
private List<WorkflowTask> workflowTaskList;
private String id;
private String name;
private String ifEnable;
}
package com.zgiot.zx.workflow.dto;
import lombok.Data;
import java.util.List;
/**
* //TODO 添加类/接口功能描述
*
* @author 作者信息
* date 2019-06-03
*/
@Data
public class WorkPermissionInfoResDTO {
private String activityId;
private String templateId;
private List<WorkPermissionResDTO> form;
}
package com.zgiot.zx.workflow.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
/**
*
* date 2019-05-16
*/
@Data
public class WorkPermissionResDTO {
/**
* 主键
*/
@TableId("id")
private String id;
/**
* 模板ID
*/
@TableField("template_id")
private String templateId;
/**
* 流程节点ID
*/
@TableField("activity_id")
private String activityId;
/**
* 工单模板字段主键
*/
@TableField("field_id")
private String fieldId;
/**
* 权限设置(编辑/只读/隐藏)
*/
@TableField("permission")
private String permission;
/**
* 字段类型
*/
@TableField("field_tp")
private String fieldTp;
/**
* 字段名称
*/
@TableField("field_nm")
private String fieldNm;
/**
* 顺序
*/
@TableField("field_order")
private Integer fieldOrder;
/**
* 提示语
*/
@TableField("field_hint")
private String fieldHint;
/**
* 是否必填
*/
@TableField("required")
private String required;
/**
* 是否参与打印
*/
@TableField("print")
private String print;
/**
* 是否关键信息
*/
@TableField("major")
private String major;
/**
* 拓展
*/
@TableField("EXPAND")
private String expand;
/**
*
*/
@TableField("if_write")
private String ifWrite;
}
package com.zgiot.zx.workflow.dto;
import com.zgiot.zx.workflow.entity.*;
import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
*
*/
@Data
public class WorkTemplateResDTO {
/**
* 模板基础信息
*/
private TemplateDO workTemplate;
/**
* 表单信息
*/
private List<TemplateFormFieldDO> templateFormFieldList;
/**
* 工作流xml
*/
private ActivitiResDTO activitiml;
/**
* 工作流文件字符串
*/
private String xmlJson;
/**
* 模板其他设置
*/
private TemplateOtherSettingsDO workTemplateOtherSettings;
/**
* 流程文件
*/
private MultipartFile file;
/**
* 表单信息json字符串
*/
private String fieldJsonStr;
/**
* 审批人员配置
*/
private List<TemplateApproveDO> workApproveList;
/**
* 表达式
*/
private List<TemplateGatewayDO> processGatewayList;
/**
* 表单权限配置
*/
private String permissionJson;
/**
* 模板id
*/
private String templateId;
}
package com.zgiot.zx.workflow.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* <p>
* </p>
*
* @author jobob
* @since 2019-05-22
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("s_dept")
public class SDept implements Serializable {
private static final long serialVersionUID = 1L;
@TableField("BUSINESS_ID")
private String businessId;
@TableField("CODE")
private String code;
@TableField("PARENT_ID")
private String parentId;
@TableField("NAME")
private String name;
@TableField("CASE_COUNT")
private int caseCount;
@TableField("SORT")
private int sort;
@TableField("CREATE_BY")
private String createBy;
@TableField("CREATE_DATE")
private Date createDate;
@TableField("UPDATE_BY")
private String updateBy;
@TableField("UPDATE_DATE")
private Date updateDate;
@TableField("DEL_FLAG")
private String delFlag;
@TableField("FLAG")
private String flag ;
@TableField("REMARKS")
private String remarks;
}
package com.zgiot.zx.workflow.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* <p>
* </p>
*
* @author jobob
* @since 2019-05-22
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("s_role")
public class SRole implements Serializable {
private static final long serialVersionUID = 1L;
@TableId("BUSINESS_ID")
private String businessId;
@TableField("ROLE_NAME")
private String roleName;
@TableField("CREATE_BY")
private String createBy;
@TableField("CREATE_DATE")
private Date createDate;
@TableField("UPDATE_BY")
private String updateBy;
@TableField("UPDATE_DATE")
private Date updateDate;
@TableField("DEL_FLAG")
private String delFlag;
@TableField("FLAG")
private String flag;
@TableField("REMARKS")
private String remarks;
@TableField("CODE")
private String code;
}
package com.zgiot.zx.workflow.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* <p>
* </p>
*
* @author jobob
* @since 2019-05-22
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("s_user")
public class SUser implements Serializable {
private static final long serialVersionUID = 1L;
@TableId("BUSINESS_ID")
private String businessId;
@TableField("LOGIN_NAME")
private String loginName;
@TableField("PASSWORD")
private String password;
@TableField("NAME")
private String name;
@TableField("SEX")
private String sex;
@TableField("PHONE")
private String phone;
@TableField("DEPT_ID")
private String deptId;
@TableField("EMAIL")
private String email;
@TableField("CREATE_BY")
private String create_By;
@TableField("CREATE_DATE")
private String createDate;
@TableField("UPDATE_BY")
private String updateBy;
@TableField("DEL_FLAG")
private String delFlag;
@TableField("FLAG")
private String flag;
@TableField("REMARKS")
private String remarks;
}
package com.zgiot.zx.workflow.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* <p>
* </p>
*
* @author jobob
* @since 2019-05-22
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("tb_role")
public class TbRole implements Serializable {
private static final long serialVersionUID = 1L;
@TableField("id")
private String id;
@TableField("name")
private String name;
}
package com.zgiot.zx.workflow.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* <p>
* </p>
*
* @author jobob
* @since 2019-05-22
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("tb_user")
public class TbUser implements Serializable {
private static final long serialVersionUID = 1L;
@TableField("id")
private String id;
@TableField("name")
private String name;
}
package com.zgiot.zx.workflow.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zgiot.zx.workflow.dto.MTUserInfoRspDTO;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* <p>
* </p>
*
* @author jobob
* @since 2019-05-16
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("workflow_template_approve")
public class TemplateApproveDO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId("id")
private String id;
/**
* 模板主键
*/
@TableField("template_id")
private String templateId;
/**
* 流程节点主键
*/
@TableField("activity_id")
private String activityId;
/**
* 流程节点名称
*/
@TableField("activity_nm")
private String activityNm;
/**
* 审批人员类型(1:指定人员2:指定角色3.创建人自选4.由上级指定)
*/
@TableField("person_type")
private String personType;
/**
* 审批人员数据
*/
@TableField("person_data")
private String personData;
/**
* 审批方式(1:依次2:会签3:或签)
*/
@TableField("approve_type")
private String approveType;
/**
* 审批人员为空时处理方式(1:自动通过 2:转交管理员)
*/
@TableField("person_null")
private String personNull;
/**
* 是否是审批节点(1:是 0:否)
*/
@TableField("if_approve_node")
private String ifApproveNode;
/**
* 是否抄送
*/
@TableField("if_copy")
private String ifCopy;
/**
* 节点配置按钮项
*/
@TableField("buttons")
private String buttons;
@TableField(exist = false)
private String workId;
@TableField(exist = false)
private MTUserInfoRspDTO mtUserInfoRspDTO;
}
package com.zgiot.zx.workflow.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zgiot.zx.workflow.dto.MTUserInfoRspDTO;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* <p>
* </p>
*
* @author jobob
* @since 2019-05-16
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("workflow_template_approve_hi")
public class TemplateApproveHi implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId("id")
private String id;
/**
* 模板主键
*/
@TableField("template_id")
private String templateId;
/**
* 流程节点主键
*/
@TableField("activity_id")
private String activityId;
/**
* 流程节点名称
*/
@TableField("activity_nm")
private String activityNm;
/**
* 审批人员类型(1:指定人员2:指定角色3.创建人自选4.由上级指定)
*/
@TableField("person_type")
private String personType;
/**
* 审批人员数据
*/
@TableField("person_data")
private String personData;
/**
* 审批方式(1:依次2:会签3:或签)
*/
@TableField("approve_type")
private String approveType;
/**
* 审批人员为空时处理方式(1:自动通过 2:转交管理员)
*/
@TableField("person_null")
private String personNull;
/**
* 是否是审批节点(1:是 0:否)
*/
@TableField("if_approve_node")
private String ifApproveNode;
/**
* 是否抄送
*/
@TableField("if_copy")
private String ifCopy;
/**
* 节点配置按钮项
*/
@TableField("buttons")
private String buttons;
@TableField(exist = false)
private String workId;
@TableField(exist = false)
private MTUserInfoRspDTO mtUserInfoRspDTO;
}
package com.zgiot.zx.workflow.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* <p>
* </p>
*
* @author jobob
* @since 2019-05-08
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("workflow_template")
public class TemplateDO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 工单模板主键
*/
@TableId("id")
private String id;
/**
* 模板名称
*/
@TableField("template_nm")
private String templateNm;
/**
* 模板类型
*/
@TableField("type_template")
private String typeTemplate;
/**
* 工单类型主键
*/
@TableField("work_tp_id")
private String workTpId;
/**
* 是否允许手机创建(1:是;0:否)
*/
@TableField("phone")
private String phone;
/**
* 可创建工单的角色(多个)
*/
@TableField("create_roles")
private String createRoles;
/**
* 可管理导出模板的角色(多个)
*/
@TableField("manager_roles")
private String managerRoles;
/**
*模板说明
*/
@TableField("template_explain")
private String templateExplain;
/**
* 是否启用 1:启动 0:停用
*/
@TableField("if_enable")
private String ifEnable;
/**
* icon
*/
@TableField("icon_image")
private String iconImage;
@TableField("status")
private String status;
/**
* 创建时间
*/
@TableField("create_time")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date createTime;
/**
* 更新时间
*/
@TableField("update_time")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date updateTime;
}
package com.zgiot.zx.workflow.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* <p>
* </p>
*
* @author jobob
* @since 2019-05-08
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("workflow_template_form_field")
@Builder
public class TemplateFormFieldDO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 字段主键
*/
@TableId("id")
private String id;
//private String fieldId;
public String getFieldId(){
return this.id;
}
/**
* 工单模板主键
*/
@TableField("template_id")
private String templateId;
/**
* 字段类型
*/
@TableField("field_tp")
private String fieldTp;
/**
* 字段名称
*/
@TableField("field_nm")
private String fieldNm;
/**
* 顺序
*/
@TableField("field_order")
private Integer fieldOrder;
/**
* 提示语
*/
@TableField("field_hint")
private String fieldHint;
/**
* 是否必填
*/
@TableField("required")
private String required;
/**
* 是否参与打印
*/
@TableField("print")
private String print;
/**
* 是否关键信息
*/
@TableField("major")
private String major;
/**
* 拓展
*/
@TableField("expand")
private String expand;
}
package com.zgiot.zx.workflow.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* <p>
* </p>
*
* @author wangxiahui
* @since 2019-05-28
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("workflow_template_gateway")
public class TemplateGatewayDO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* ID
*/
@TableId("id")
private String id;
/**
* 模板ID
*/
@TableField("template_id")
private String templateId;
/**
* 流程节点ID
*/
@TableField("activity_id")
private String activityId;
/**
* 表单字段ID
*/
@TableField("field_id")
private String fieldId;
/**
* 表达式
*/
@TableField("conditions")
private String conditions;
/**
* 类型(1:表单验证 2:审批验证)
*/
@TableField("type")
private String type;
@TableField(exist = false)
private TemplateFormFieldDO templateFormFieldDO;
}
package com.zgiot.zx.workflow.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* <p>
* </p>
*
* @author wangxiahui
* @since 2019-05-28
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("workflow_template_gateway_hi")
public class TemplateGatewayHi implements Serializable {
private static final long serialVersionUID = 1L;
/**
* ID
*/
@TableId("id")
private String id;
/**
* 模板ID
*/
@TableField("template_id")
private String templateId;
/**
* 流程节点ID
*/
@TableField("activity_id")
private String activityId;
/**
* 表单字段ID
*/
@TableField("field_id")
private String fieldId;
/**
* 表达式
*/
@TableField("conditions")
private String conditions;
/**
* 类型(1:表单验证 2:审批验证)
*/
@TableField("type")
private String type;
@TableField(exist = false)
private TemplateFormFieldDO templateFormFieldDO;
}
package com.zgiot.zx.workflow.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
*
* </p>
*
* @author jobob
* @since 2019-05-21
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("workflow_template_other_settings")
public class TemplateOtherSettingsDO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId("template_id")
private String templateId;
/**
* 审批重复 1:是 2:否
*/
@TableField("approve_repeat")
private String approveRepeat;
/**
* 审批提示语
*/
@TableField("approve_tips")
private String approveTips;
/**
* 是否必填 1:是 0:否
*/
@TableField("is_required")
private String isRequired;
}
package com.zgiot.zx.workflow.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* <p>
* </p>
*
* @author jobob
* @since 2019-05-08
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("workflow_template_permission")
@Builder
public class TemplatePermissionDO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId("id")
private String id;
/**
* 模板ID
*/
@TableField("template_id")
private String templateId;
/**
* 流程节点ID
*/
@TableField("activity_id")
private String activityId;
/**
* 工单模板字段主键
*/
@TableField("field_id")
private String fieldId;
/**
* 权限设置(编辑/只读/隐藏)
*/
@TableField("permission")
private String permission;
@TableField(exist = false)
private String fieldNm;
@TableField("if_write")
private String ifWrite;
}
package com.zgiot.zx.workflow.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* <p>
* </p>
*
* @author jobob
* @since 2019-05-08
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("workflow_template_permission_hi")
@Builder
public class TemplatePermissionHi implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId("id")
private String id;
/**
* 模板ID
*/
@TableField("template_id")
private String templateId;
/**
* 流程节点ID
*/
@TableField("activity_id")
private String activityId;
/**
* 工单模板字段主键
*/
@TableField("field_id")
private String fieldId;
/**
* 权限设置(编辑/只读/隐藏)
*/
@TableField("permission")
private String permission;
@TableField(exist = false)
private String fieldNm;
@TableField("if_write")
private String ifWrite;
}
package com.zgiot.zx.workflow.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* <p>
* </p>
*
* @author jobob
* @since 2019-05-08
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("workflow_template_process_file")
public class TemplateProcessFileDO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId("id")
private String id;
/**
* 工单模板主键
*/
@TableField("template_id")
private String templateId;
/**
* 流程文件存放路径
*/
@TableField("process_file")
private String processFilePath;
/**
* 流程文件名称
*/
@TableField("process_file_nm")
private String processFileNm;
/**
* 流程文件是否部署
*/
@TableField("if_deploy")
private String ifDeploy;
@TableField("new_process_file")
private String newProcessFile;
}
package com.zgiot.zx.workflow.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <p>
* <p>
* </p>
*
* @author jobob
* @since 2019-05-08
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("workflow_task_type")
public class TemplateTypeDO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 工单类型主键
*/
@TableId("id")
private String id;
/**
* 工单类型名称
*/
@TableField("name")
private String name;
/**
* 是否启用
*/
@TableField("if_enable")
private String ifEnable;
}
package com.zgiot.zx.workflow.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import lombok.experimental.Accessors;
import java.beans.Transient;
import java.util.Date;
/**
* Created with cy on 2019-7-26 16:12:11.
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("workflow_task")
public class WorkflowTask {
/**
* @desc 工单主键
* @column work_id
* @default
*/
@TableId("work_id")
private String workId;
/**
* @desc 工单号
* @column work_no
* @default
*/
@TableField("work_no")
private String workNo;
/**
* @desc 状态(0:已修改 1 已发布)
* @column work_no
* @default
*/
@TableField("status")
private String status;
/**
* @desc 工单模板主键
* @column template_id
* @default
*/
@TableField("template_id")
private String templateId;
/**
* @desc 工单主题
* @column work_subject
* @default
*/
@TableField("work_subject")
private String workSubject;
/**
* @desc 工单描述内容
* @column work_content
* @default
*/
@TableField("work_content")
private String workContent;
/**
* @desc 优先级
* @column priority
* @default
*/
@TableField("priority")
private String priority;
/**
* @desc 时效
* @column aging
* @default
*/
@TableField("aging")
private Integer aging;
/**
* @desc 创建时间
* @column create_time
* @default
*/
@TableField("create_time")
private Date createTime;
/**
* @desc 更新时间
* @column update_time
* @default
*/
@TableField("update_time")
private Date updateTime;
/**
* @desc
* @column cutoff_time
* @default
*/
@TableField("cutoff_time")
private Date cutoffTime;
/**
* @desc 工单进度
* @column schedule
* @default
*/
@TableField("schedule")
private String schedule;
/**
* @desc 工单状态(0:草稿 1:执行中 2:审批中 3:已完成 4:中止)
* @column work_status
* @default
*/
@TableField("work_status")
private String workStatus;
/**
* @desc
* @column create_person
* @default
*/
@TableField("create_person")
private String createPerson;
/**
* @desc
* @column apply_dept
* @default
*/
@TableField("apply_dept")
private String applyDept;
/**
* @desc 是否发送消息
* @column if_send
* @default
*/
@TableField("if_send")
private String ifSend;
/*
* @desc 类型
* @column work_type_id
* */
@TableField("work_tp_id")
private String workTpId;
}
package com.zgiot.zx.workflow.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
* Created with cy on 2019-7-26 16:12:11.
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("workflow_task_hi")
public class WorkflowTaskHi {
public WorkflowTaskHi() {
}
/**
* @desc 工单主键
* @column work_id
* @default
*/
@TableId("work_id")
private String workId;
/**
* @desc 工单号
* @column work_no
* @default
*/
@TableField("work_no")
private String workNo;
/**
* @desc 状态(0:已修改 1 已发布)
* @column work_no
* @default
*/
@TableField("status")
private String status;
/**
* @desc 工单模板主键
* @column template_id
* @default
*/
@TableField("template_id")
private String templateId;
/**
* @desc 工单主题
* @column work_subject
* @default
*/
@TableField("work_subject")
private String workSubject;
/**
* @desc 工单描述内容
* @column work_content
* @default
*/
@TableField("work_content")
private String workContent;
/**
* @desc 优先级
* @column priority
* @default
*/
@TableField("priority")
private String priority;
/**
* @desc 时效
* @column aging
* @default
*/
@TableField("aging")
private Integer aging;
/**
* @desc 创建时间
* @column create_time
* @default
*/
@TableField("create_time")
private Date createTime;
/**
* @desc 更新时间
* @column update_time
* @default
*/
@TableField("update_time")
private Date updateTime;
/**
* @desc
* @column cutoff_time
* @default
*/
@TableField("cutoff_time")
private Date cutoffTime;
/**
* @desc 工单进度
* @column schedule
* @default
*/
@TableField("schedule")
private String schedule;
/**
* @desc 工单状态(0:草稿 1:执行中 2:审批中 3:已完成 4:中止)
* @column work_status
* @default
*/
@TableField("work_status")
private String workStatus;
/**
* @desc
* @column create_person
* @default
*/
@TableField("create_person")
private String createPerson;
/**
* @desc
* @column apply_dept
* @default
*/
@TableField("apply_dept")
private String applyDept;
/**
* @desc 是否发送消息
* @column if_send
* @default
*/
@TableField("if_send")
private String ifSend;
/*
* @desc 类型
* @column work_type_id
* */
@TableField("work_tp_id")
private String workTpId;
}
package com.zgiot.zx.workflow.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* Created with cy on 2019-7-26 16:12:11.
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("workflow_template_form_field_hi")
@Builder
public class WorkflowTemplateFormFieldHi implements Serializable{
/**
* 字段主键
*/
@TableId("id")
private String id;
/**
* 工单模板主键
*/
@TableField("template_id")
private String templateId;
/**
* 字段类型
*/
@TableField("field_tp")
private String fieldTp;
/**
* 字段名称
*/
@TableField("field_nm")
private String fieldNm;
/**
* 顺序
*/
@TableField("field_order")
private Integer fieldOrder;
/**
* 提示语
*/
@TableField("field_hint")
private String fieldHint;
/**
* 是否必填
*/
@TableField("required")
private String required;
/**
* 是否参与打印
*/
@TableField("print")
private String print;
/**
* 是否关键信息
*/
@TableField("major")
private String major;
/**
* 拓展
*/
@TableField("expand")
private String expand;
}
package com.zgiot.zx.workflow.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* Created with cy on 2019-7-26 16:12:11.
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("workflow_template_hi")
public class WorkflowTemplateHi implements Serializable{
/**
* @desc 工单模板主键
* @column id
* @default
*/
@TableId("id")
private String id;
/**
* @desc 模板名称
* @column template_nm
* @default
*/
@TableField("template_no")
private String templateNm;
/**
* @desc 工单类型主键
* @column work_tp_id
* @default
*/
@TableField("work_tp_id")
private String workTpId;
/**
* @desc 是否允许手机创建
* @column phone
* @default
*/
@TableField("phone")
private String phone;
/**
* @desc
* @column create_roles
* @default
*/
@TableField("create_roles")
private String createRoles;
/**
* @desc
* @column manager_roles
* @default
*/
@TableField("manager_roles")
private String managerRoles;
/**
* @desc
* @column template_explain
* @default
*/
@TableField("template_explatin")
private String templateExplain;
/**
* @desc 是否启用
* @column if_enable
* @default
*/
@TableField("if_enable")
private String ifEnable;
/**
* @desc 图标
* @column icon_image
* @default
*/
@TableField("icon_image")
private String iconImage;
/**
* @desc
* @column create_time
* @default
*/
@TableField("create_time")
private Date createTime;
/**
* @desc
* @column update_time
* @default
*/
@TableField("update_time")
private Date updateTime;
/**
* @desc
* @column version
* @default
*/
@TableField("version")
private String version;
/**
* @desc
* @column version
* @default
*/
@TableField("type_template")
private String typeTemplate;
}
package com.zgiot.zx.workflow.enums;
public enum ApproveFlag {
PASS(1,"通过"),REFUSE(0,"拒绝"),APPLY(2,"申请"),CLAIM(3,"认领");
//防止字段值被修改,增加的字段也统一final表示常量
private final int key;
private final String value;
private ApproveFlag(int key,String value){
this.key = key;
this.value = value;
}
//根据key获取枚举
public static ApproveFlag getEnumByKey(int key){
for(ApproveFlag temp: ApproveFlag.values()){
if(temp.getKey() == key){
return temp;
}
}
return null;
}
public int getKey() {
return key;
}
public String getValue() {
return value;
}
}
package com.zgiot.zx.workflow.enums;
/**
* @ClassName MessageType
* @Descroption TODO
* @Author 王夏晖
* @Date 2019/6/17 0017 16:45
**/
public enum MessageType {
URGE("1","催促"),
COPY("2","抄送"),
STOP("3","终止"),
DELY("4","延期"),
TRANSFER("5","转交"),
NEWTASK("6","新任务");
private final String key;
private final String value;
private MessageType(String key,String value){
this.key = key;
this.value = value;
}
public String getKey() {
return key;
}
public String getValue() {
return value;
}
}
package com.zgiot.zx.workflow.enums;
/**
* @ClassName TaskRecordType
* @Descroption TODO
* @Author 王夏晖
* @Date 2019/6/12 0012 9:44
**/
public enum TaskRecordType {
CREATE("1","发起任务"),
EXECUTE("2","执行任务"),
APPROVE("3","审批任务"),
COPY("4","抄送任务"),
DELY("5","延期任务"),
TRANSFER("6","转交任务"),
STOP("7","中止任务"),
FINSH("8","任务结束"),
RETRACT("9","任务撤回");
private final String key;
private final String value;
private TaskRecordType(String key,String value){
this.key = key;
this.value = value;
}
public String getKey() {
return key;
}
public String getValue() {
return value;
}
}
package com.zgiot.zx.workflow.enums;
/**
* 工单状态枚举类
*/
public enum TaskStatus {
/**
* 0、1、2、3 、7、8、9为工单整体状态
* 4、5、6 为工单进度状态
*/
DRAFT("0","草稿"),
EXECUTE("1","执行中"),
APPROVE("2","审批中"),
COMPLETE("3","已完成"),
QUICKLY("4","尽快完成"),
DELAY("5","延期"),
OVERDUE("6","逾期"),
ARCHIVE("7","归档"),
STOP("8","中止"),
DELETE("9","删除");
private final String key;
private final String value;
private TaskStatus(String key,String value){
this.key = key;
this.value = value;
}
public String getKey() {
return key;
}
public String getValue() {
return value;
}
}
package com.zgiot.zx.workflow.enums;
/**
* @ClassName TemplateApproveType
* @Descroption TODO
* @Author 王夏晖
* @Date 2019/6/11 0011 10:59
**/
public enum TemplateApproveType {
PERSON("1","指定人员"),
ROLE("2","指定角色"),
CREATESELECT("3","创建人自选"),
SUPERSELECT("4","由上级指定"),
SAMEBEFOR("5","同上个节点一致"),
CREATESELF("6","创建人自己");
private final String key;
private final String value;
private TemplateApproveType(String key,String value){
this.key = key;
this.value = value;
}
public String getKey() {
return key;
}
public String getValue() {
return value;
}
}
package com.zgiot.zx.workflow.filters;
import com.zgiot.zx.workflow.mapper.SUserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
@WebFilter(filterName = "adminFilter",
urlPatterns = "/*" /*通配符(*)表示对所有的web资源进行拦截*/
)
public class Filter implements javax.servlet.Filter {
@Autowired
SUserMapper sUserMapper;
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
throws ServletException, java.io.IOException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
//获取token后拼接的用户id
String token = request.getHeader("Authorization");
if(token != null && !"".equals(token)){
String userId = token.substring(token.indexOf("KL92HAQ") + 7, token.lastIndexOf("KL92HAQ"));
if("".equals(userId)){
response.getWriter().write("{\"code\":400,\"message\":\"未登陆\"}");
}
//获取管理员code
String adminCode = sUserMapper.getAdminCode();
//获取当前登陆用户的code
List<String> userCode = sUserMapper.getUserCode(userId);
if(userCode.contains(adminCode)){
//当前登陆用户的code和管理员相同,不进行拦截
chain.doFilter(req, resp);
} else {
if("XMLHttpRequest".equalsIgnoreCase(request
.getHeader("X-Requested-With"))){
response.getWriter().write("{\"code\":401,\"message\":\"当前登陆用户无权限\"}");
} else {
response.getWriter().write("{\"code\":401,\"message\":\"当前登陆用户无权限\"}");
}
//当前登陆用户的code和管理员不相同,进行拦截并返回首页
}
} else {
response.getWriter().write("{\"code\":400,\"message\":\"未登录\"}");
}
}
public void init(FilterConfig config) throws ServletException {
}
}
package com.zgiot.zx.workflow.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zgiot.zx.workflow.entity.TemplateProcessFileDO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
/**
* <p>
* Mapper 接口
* </p>
*
* @author jobob
* @since 2019-05-08
*/
public interface ProcessFileMapper extends BaseMapper<TemplateProcessFileDO> {
@Update("<script>UPDATE workflow_template_process_file " +
"SET "+
" new_process_file = #{fileName}, " +
" start_usertask = #{activitiId} " +
"WHERE " +
"template_id = #{templateId}</script>")
boolean updateNewProcessFile(@Param("fileName") String fileName,@Param("templateId") String templateId,@Param("activitiId") String activitId);
@Select("<script>SELECT " +
"process_file_nm " +
"From workflow_template_process_file " +
"WHERE template_id = #{templateId}</script>")
String fileNameBytemplateId(@Param("templateId") String templateId);
}
package com.zgiot.zx.workflow.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zgiot.zx.workflow.entity.TemplateGatewayDO;
import com.zgiot.zx.workflow.entity.TemplateGatewayHi;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author jobob
* @since 2019-05-08
*/
public interface ProcessGatewayHiMapper extends BaseMapper<TemplateGatewayHi> {
@Insert("<script>insert into workflow_template_gateway_hi(id,template_id,activity_id,field_id,conditions,type)" +
"values " +
"<foreach collection=\"listTemGatewayHi\" item=\"items\" separator=\",\" >" +
"( #{items.id},#{items.templateId},#{items.activityId},#{items.fieldId},#{items.conditions}," +
"#{items.type})</foreach></script>")
boolean insertGatewayHi(@Param("listTemGatewayHi") List<TemplateGatewayDO> templateGatewayHis);
}
package com.zgiot.zx.workflow.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zgiot.zx.workflow.entity.TemplateFormFieldDO;
import com.zgiot.zx.workflow.entity.TemplateGatewayDO;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.time.temporal.TemporalField;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author wangxiahui
* @since 2019-05-28
*/
@Repository
public interface ProcessGatewayMapper extends BaseMapper<TemplateGatewayDO> {
@Select("<script>SELECT * FROM workflow_template_gateway where workflow_template_gateway.template_id = #{templateId}</script>")
List<TemplateGatewayDO> gatewayByTemplateFormFieldDO(TemplateFormFieldDO templateFormFieldDO);
}
package com.zgiot.zx.workflow.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zgiot.zx.workflow.entity.SDept;
import com.zgiot.zx.workflow.entity.SRole;
import org.apache.ibatis.annotations.ResultMap;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author jobob
* @since 2019-05-22
*/
@Repository
public interface SDeptMapper extends BaseMapper<SDept> {
@Select("<script>select * from s_dept where 1=1 "
+ "<if test=\"delFlag !=null and delFlag != '' \">and del_flag = 0 </if> "
+ "<if test=\"flag !=null and flag != '' \">and flag = 1 </if>" +
"and PARENT_ID = '0' "
+ "</script>")
List<SDept> querySDepts();
@Select("<script>select * from s_dept where 1=1 "
+ "<if test=\"delFlag !=null and delFlag != '' \">and del_flag = 0 </if> "
+ "<if test=\"flag !=null and flag != '' \">and flag = 1 </if>" +
"and PARENT_ID = #{businessId}"
+ "</script>")
List<SDept> childdept(SDept sDept);
}
package com.zgiot.zx.workflow.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zgiot.zx.workflow.entity.SRole;
import com.zgiot.zx.workflow.entity.TbRole;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author jobob
* @since 2019-05-22
*/
@Repository
public interface SRoleMapper extends BaseMapper<SRole> {
@Select("<script>select * from s_role where 1=1 and del_flag = 0 and flag = 1"
+ "</script>")
List<SRole> querySRoles();
}
package com.zgiot.zx.workflow.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zgiot.zx.workflow.entity.SDept;
import com.zgiot.zx.workflow.entity.SUser;
import com.zgiot.zx.workflow.entity.TbUser;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.ResultMap;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author jobob
* @since 2019-05-22
*/
@Repository
public interface SUserMapper extends BaseMapper<SUser> {
@Select("<script>select * from s_user where 1=1 "
+ "<if test=\"delFlag !=null and delFlag != '' \">and del_flag = 0 </if> "
+ "<if test=\"flag !=null and flag != '' \">and flag = 1 </if>" +
"and DEPT_ID = #{businessId}"
+ "</script>")
List<SUser> querySUsers(SDept sDept);
@Select("<script>select code from s_user su " +
"left join s_user_role sur on su.business_id = sur.user_id " +
"left join s_role sr on sr.business_id = sur.role_id " +
"where su.del_flag = '0' " +
"and su.flag = '1' " +
"and sr.del_flag = '0' " +
"and sr.flag = '1' " +
"and su.business_id = #{userId} "
+ "</script>")
List<String> getUserCode(@Param("userId") String userId);
@Select("select value from s_dictionary where type = 'ADMIN'")
String getAdminCode();
}
package com.zgiot.zx.workflow.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zgiot.zx.workflow.entity.TbRole;
/**
* <p>
* Mapper 接口
* </p>
*
* @author jobob
* @since 2019-05-22
*/
public interface TbRoleMapper extends BaseMapper<TbRole> {
}
package com.zgiot.zx.workflow.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zgiot.zx.workflow.entity.TbUser;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author jobob
* @since 2019-05-22
*/
public interface TbUserMapper extends BaseMapper<TbUser> {
/**
* 通过角色查询用户
* @param roleId
* @return
*/
List<String> queryUserByRoleId(String[] roleId);
}
package com.zgiot.zx.workflow.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zgiot.zx.workflow.entity.TemplateApproveDO;
import com.zgiot.zx.workflow.entity.TemplateApproveHi;
import com.zgiot.zx.workflow.entity.TemplateFormFieldDO;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author jobob
* @since 2019-05-16
*/
public interface WorkApproveHiMapper extends BaseMapper<TemplateApproveHi> {
@Insert("<script>insert into workflow_template_approve_hi(id,template_id,activity_id,activity_nm,person_type,person_data,approve_type,person_null,if_approve_node,if_copy,buttons)" +
"values " +
"<foreach collection=\"listTemAprHi\" item=\"items\" separator=\",\" >" +
"( #{items.id},#{items.templateId},#{items.activityId},#{items.activityNm},#{items.personType}," +
"#{items.personData},#{items.approveType},#{items.personNull},#{items.ifApproveNode}" +
",#{items.ifCopy},#{items.buttons})</foreach></script>")
boolean insertApproveHi(@Param("listTemAprHi") List<TemplateApproveDO> templateApproveHiList);
}
package com.zgiot.zx.workflow.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zgiot.zx.workflow.entity.TemplateApproveDO;
import com.zgiot.zx.workflow.entity.TemplateFormFieldDO;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author jobob
* @since 2019-05-16
*/
public interface WorkApproveMapper extends BaseMapper<TemplateApproveDO> {
/**
* 根据模版id和节点id查询角色名称(该方法只用于停送电)
* @param templateId
* @param activityId
* @return
*/
String getRoleNameByTemplateIdAndActivityId(String templateId, String activityId);
List<TemplateApproveDO> selectApproveData(TemplateApproveDO templateApproveDO);
@Delete("<script>delete " +
"from " +
"workflow_template_approve " +
"where activity_id not In(" +
"<foreach collection =\"activitis\" item=\"item\" separator=\",\">" +
"#{item}" +
"</foreach>" +
") AND template_id = #{templateId} " +
"</script>")
boolean deleteByActivitiId(@Param("activitis")List<String> activitis,@Param("templateId")String templateId);
}
package com.zgiot.zx.workflow.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zgiot.zx.workflow.dto.WorkPermissionResDTO;
import com.zgiot.zx.workflow.entity.TemplatePermissionDO;
import com.zgiot.zx.workflow.entity.TemplatePermissionHi;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author jobob
* @since 2019-05-08
*/
@Repository
public interface WorkPermissionHiMapper extends BaseMapper<TemplatePermissionHi> {
@Insert("<script>insert into workflow_template_permission_hi(id,template_id,activity_id,field_id,permission,if_write)" +
"values " +
"<foreach collection=\"listTemPerHi\" item=\"items\" separator=\",\" >" +
"( #{items.id},#{items.templateId},#{items.activityId},#{items.fieldId}," +
"#{items.permission},#{items.ifWrite}" +
")</foreach></script>")
boolean insertPermissionHi(@Param("listTemPerHi") List<TemplatePermissionDO> templatePermissionHiList);
}
package com.zgiot.zx.workflow.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zgiot.zx.workflow.dto.WorkPermissionResDTO;
import com.zgiot.zx.workflow.entity.TemplateFormFieldDO;
import com.zgiot.zx.workflow.entity.TemplatePermissionDO;
import org.activiti.bpmn.model.UserTask;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author jobob
* @since 2019-05-08
*/
public interface WorkPermissionMapper extends BaseMapper<TemplatePermissionDO> {
@Select("" +
"select * from workflow_template_permission a " +
"left join workflow_template_form_field b on a.field_id = b.id " +
"where a.permission ='0' and a.activity_id =#{activityId} and a.template_id =#{templateId}" +
"order by b.field_order asc")
List<WorkPermissionResDTO> queryPermissionAndFieldByNode(@Param("activityId") String activityId, @Param("templateId") String templateId);
List<WorkPermissionResDTO> selectListByTemplateId(String templateId);
@Select("<script>select * from workflow_template_permission " +
"where template_id=#{templateId} " +
"and field_id=#{id} " +
"</script>")
List<TemplatePermissionDO> workPermissionByTemplateFormFieldDO(TemplateFormFieldDO templateFormFieldDO);
@Delete("<script>delete " +
"from " +
"workflow_template_permission " +
"where activity_id not In(" +
"<foreach collection =\"activits\" item=\"item\" separator=\",\">" +
"#{item}" +
"</foreach>" +
") AND template_id = #{templateId}" +
"</script>")
boolean deleteByActivitiId(@Param("activits") List<String> activitis,@Param("templateId")String template);
}
package com.zgiot.zx.workflow.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zgiot.zx.workflow.entity.TemplateFormFieldDO;
import org.apache.ibatis.annotations.Insert;
import org.springframework.stereotype.Repository;
/**
* <p>
* Mapper 接口
* </p>
*
* @author jobob
* @since 2019-05-08
*/
@Repository
public interface WorkTemplateFieldMapper extends BaseMapper<TemplateFormFieldDO> {
@Insert("")
int insertField(TemplateFormFieldDO templateFormFieldDO);
}
package com.zgiot.zx.workflow.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zgiot.zx.workflow.entity.TemplateDO;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;
/**
* <p>
* Mapper 接口
* </p>
*
* @author jobob
* @since 2019-05-08
*/
@Repository
public interface WorkTemplateMapper extends BaseMapper<TemplateDO> {
@Update("<script>update workflow_template set status = 1" +
" where id=#{id}</script>")
boolean updateStatus(TemplateDO templateDO);
}
package com.zgiot.zx.workflow.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zgiot.zx.workflow.entity.TemplateOtherSettingsDO;
/**
* <p>
* Mapper 接口
* </p>
*
* @author jobob
* @since 2019-05-21
*/
public interface WorkTemplateOtherSettingsMapper extends BaseMapper<TemplateOtherSettingsDO> {
}
package com.zgiot.zx.workflow.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zgiot.zx.workflow.entity.TemplateTypeDO;
/**
* <p>
* Mapper 接口
* </p>
*
* @author jobob
* @since 2019-05-08
*/
public interface WorkTypeMapper extends BaseMapper<TemplateTypeDO> {
}
package com.zgiot.zx.workflow.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zgiot.zx.workflow.entity.WorkflowTask;
import com.zgiot.zx.workflow.entity.WorkflowTaskHi;
import org.apache.ibatis.annotations.Insert;
import org.springframework.stereotype.Repository;
/**
* Created with cy on 2019-7-26 16:12:11.
*/
@Repository
public interface WorkflowTaskHiRepository extends BaseMapper<WorkflowTaskHi> {
@Insert("<script>INSERT INTO workflow_task_hi " +
"VALUES(" +
"#{workId},#{workNo},#{templateId},#{workSubject},#{workContent}," +
"#{priority},#{aging},#{createTime},#{updateTime},#{cutoffTime}," +
"#{schedule},#{workStatus},#{createPerson},#{applyDept},#{ifSend}," +
"#{workTpId})</script>")
Boolean insertWorkflowTaskHi(WorkflowTask workflowTask);
}
package com.zgiot.zx.workflow.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zgiot.zx.workflow.entity.TemplateDO;
import com.zgiot.zx.workflow.entity.WorkflowTask;
import org.apache.ibatis.annotations.ResultMap;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* Created with cy on 2019-7-26 16:12:11.
*/
@Repository
public interface WorkflowTaskRepository extends BaseMapper<WorkflowTask> {
@Update("<script>update workflow_task set status=1" +
" where template_id = #{id}</script>")
boolean updateStatus(TemplateDO templateDO);
}
package com.zgiot.zx.workflow.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zgiot.zx.workflow.entity.TemplateFormFieldDO;
import com.zgiot.zx.workflow.entity.WorkflowTemplateFormFieldHi;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.ResultMap;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* Created with cy on 2019-7-26 16:12:11.
*/
@Repository
public interface WorkflowTemplateFormFieldHiRepository extends BaseMapper<WorkflowTemplateFormFieldHi>{
@Insert("<script>insert into workflow_template_form_field_hi(id,template_id,field_tp,field_nm,field_order,field_hint,required,print,major,expand)" +
"values " +
"<foreach collection=\"listFormField\" item=\"items\" separator=\",\" >" +
"( #{items.id},#{items.templateId},#{items.fieldTp},#{items.fieldNm},#{items.fieldOrder}," +
"#{items.fieldHint},#{items.required},#{items.print},#{items.major}" +
",#{items.expand})</foreach></script>")
boolean insertFormFieldHi(@Param("listFormField") List<TemplateFormFieldDO> templateFormFieldDOS);
}
package com.zgiot.zx.workflow.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zgiot.zx.workflow.entity.TemplateDO;
import com.zgiot.zx.workflow.entity.WorkflowTemplateHi;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.ResultMap;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* Created with cy on 2019-7-26 16:12:11.
*/
@Repository
public interface WorkflowTemplateHiRepository extends BaseMapper<WorkflowTemplateHi> {
@Select("<script>SELECT Max(cast(version as UNSIGNED INTEGER)) FROM workflow_template_hi " +
"where type_template = #{typeTemplate} order by create_time Desc</script>")
List<String> temVersionHiByTptem(TemplateDO templateDO);
@Insert("<script>INSERT into workflow_template_hi(id,template_nm,work_tp_id,phone," +
"create_roles,manager_roles,template_explain," +
"if_enable,icon_image,create_time,update_time,version,type_template) " +
"VALUES(#{id},#{templateNm},#{workTpId},#{phone},#{createRoles},#{managerRoles}," +
"#{templateExplain},#{ifEnable},#{iconImage},NOW(),NOW(),#{version},#{typeTemplate})</script>")
boolean insertTemplateHi(WorkflowTemplateHi workflowTemplateHi);
}
package com.zgiot.zx.workflow.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zgiot.zx.workflow.entity.TemplateProcessFileDO;
import org.activiti.bpmn.model.FlowNode;
import org.activiti.engine.task.Task;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
/**
* <p>
* 服务类
* </p>
*
* @author jobob
* @since 2019-05-08
*/
public interface IProcessFileService extends IService<TemplateProcessFileDO> {
/* boolean uploadProcessFile(MultipartFile file, String tempId, String savePath);*/
boolean uploadProcessFileByFileName(String fileName, String tempId, String savePath);
/* String queryBPMNkey(String bpmnName);
String startProcess(String key, String bussinessKey, String formjson, Map variablesjson, String userId, String userName, String templateId);
List<TaskResDTO> getTasks(String assignee);
List<TaskResDTO> getHistoryTasks(String assignee);
Task getSingleTask(String assignee, String processId);
TaskResDTO getTaskbyId(String taskid, String userId, String taskStatus);
TaskResDTO getCurrentTask(String processInstanceId);
boolean retract(String taskId);
boolean stopProcess(String processId);
boolean transferTask(String taskId, String userId, String transferUserIds);
Map<String, FlowNode> findNextTask(String taskId, String workId);
InputStream getActivitiProccessImage(String processId);*/
}
package com.zgiot.zx.workflow.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zgiot.zx.workflow.entity.TemplateGatewayDO;
/**
* <p>
* 服务类
* </p>
*
* @author wangxiahui
* @since 2019-05-28
*/
public interface IProcessGatewayService extends IService<TemplateGatewayDO> {
}
package com.zgiot.zx.workflow.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zgiot.zx.workflow.entity.TemplateApproveDO;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author jobob
* @since 2019-05-16
*/
public interface IWorkApproveService extends IService<TemplateApproveDO> {
/* Boolean saveWorkApprove(TemplateApproveDO templateApproveDO);*/
Boolean saveWorkApproveBatch(List<TemplateApproveDO> templateApproveDOList);
List<TemplateApproveDO> getWorkApprove(String templateId);
/*
TemplateApproveDO getApproveByTempIdAndactivityId(String templateId, String acticitiId);
List<TemplateApproveDO> getCreatorSelectApprove(String templateId, String workId);
void updateCreateSelectApprove(String workApproveData, String workId)throws Exception;*/
}
package com.zgiot.zx.workflow.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zgiot.zx.workflow.dto.WorkPermissionInfoResDTO;
import com.zgiot.zx.workflow.entity.TemplatePermissionDO;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author jobob
* @since 2019-05-08
*/
public interface IWorkPermissionService extends IService<TemplatePermissionDO> {
/* boolean saveWorkPermission(String jsonObject);*/
boolean saveWorkPermissionBatch(String jsonObject);
List<WorkPermissionInfoResDTO> getWorkPermissionByTemplateId(String templateId);
/* List<WorkPermissionResDTO> queryPermissionAndField(String templateId);*/
}
package com.zgiot.zx.workflow.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zgiot.zx.workflow.entity.TemplateFormFieldDO;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author jobob
* @since 2019-05-08
*/
public interface IWorkTemplateFieldService extends IService<TemplateFormFieldDO> {
boolean saveOrUpdateWorkTempldateField(String templateId, String jsonStr);
boolean deleteWorkTempldateField(String templateId);
List<TemplateFormFieldDO> selectWorkTempldateField(String templateId);
}
package com.zgiot.zx.workflow.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zgiot.zx.workflow.entity.TemplateOtherSettingsDO;
/**
* <p>
* 服务类
* </p>
*
* @author jobob
* @since 2019-05-21
*/
public interface IWorkTemplateOtherSettingsService extends IService<TemplateOtherSettingsDO> {
}
package com.zgiot.zx.workflow.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zgiot.zx.workflow.base.Ret;
import com.zgiot.zx.workflow.dto.TemplateTypeResDTO;
import com.zgiot.zx.workflow.dto.WorkTemplateResDTO;
import com.zgiot.zx.workflow.entity.TemplateDO;
import org.activiti.engine.task.Task;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author jobob
* @since 2019-05-08
*/
public interface IWorkTemplateService extends IService<TemplateDO> {
/* Ret deployProcess(String templateId);*/
List<TemplateTypeResDTO> getAllTemplates(String ifEnable, String ifPhone);
Boolean publishBytemplate(TemplateDO templateDO);
/* boolean tsakAssignee(String templateId, List<Task> task2List, String workId, String userId);
Boolean templateCopy(String templateId, String workTpId);*/
Ret saveTemplateAll(WorkTemplateResDTO workTemplateResDTO);
/* Boolean saveTemplateService(TemplateDO templateDO);
List<TemplateDO> getTemplateList(TemplateDO templateDO);
IPage<TemplateDO> getTemplatePage(TemplateDO templateDO, Integer page, Integer size) ;*/
WorkTemplateResDTO getTemplateByTemplateId(String templateId);
/* Boolean updateTemplateMove(String templateId, String workTpId);
*//**
* 办理任务
*//*
boolean completTeask(TaskInfoRDTO taskInfoRDTO);
boolean completTaskBatch(List<TaskInfoRDTO> taskInfoRDTOList);
*//**
* 撤回
*//*
boolean recall(String processId, String activityId);
*//**
* 删除模板
*//*
boolean removeTemplate(String id);*/
}
package com.zgiot.zx.workflow.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zgiot.zx.workflow.dto.TemplateTypeResDTO;
import com.zgiot.zx.workflow.dto.WorkTemplateResDTO;
import com.zgiot.zx.workflow.entity.TemplateDO;
import com.zgiot.zx.workflow.entity.WorkflowTask;
import com.zgiot.zx.workflow.entity.WorkflowTaskHi;
import java.util.List;
/**
* @Author: jiangpengpeng
* @Description:
* @Date: Created in 15:50 2019/7/29
* @Modified By:
*/
public interface WorkflowTaskHiService extends IService<WorkflowTaskHi> {
}
package com.zgiot.zx.workflow.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zgiot.zx.workflow.dto.TemplateTypeResDTO;
import com.zgiot.zx.workflow.dto.WorkTemplateResDTO;
import com.zgiot.zx.workflow.entity.TemplateDO;
import com.zgiot.zx.workflow.entity.WorkflowTask;
import java.util.List;
/**
* @Author: jiangpengpeng
* @Description:
* @Date: Created in 15:50 2019/7/29
* @Modified By:
*/
public interface WorkflowTaskService extends IService<WorkflowTask> {
//查看全部工单信息带分类
List<TemplateTypeResDTO> getAllWorkflowTask();
//修改工单提交
WorkflowTask updateWorkflowTask(WorkTemplateResDTO workTemplateResDTO);
//根据模板id查询工单数据
WorkflowTask selectBytemplate(TemplateDO templateDO);
}
package com.zgiot.zx.workflow.service.impl;
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zgiot.zx.workflow.entity.TemplateProcessFileDO;
import com.zgiot.zx.workflow.mapper.ProcessFileMapper;
import com.zgiot.zx.workflow.mapper.WorkApproveMapper;
import com.zgiot.zx.workflow.service.IProcessFileService;
import org.activiti.bpmn.converter.BpmnXMLConverter;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.FlowNode;
import org.activiti.bpmn.model.Process;
import org.activiti.bpmn.model.SequenceFlow;
import org.activiti.engine.*;
import org.activiti.engine.history.HistoricActivityInstance;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.history.HistoricTaskInstance;
import org.activiti.engine.history.HistoricVariableInstance;
import org.activiti.engine.impl.RepositoryServiceImpl;
import org.activiti.engine.impl.javax.el.ExpressionFactory;
import org.activiti.engine.impl.javax.el.ValueExpression;
import org.activiti.engine.impl.juel.ExpressionFactoryImpl;
import org.activiti.engine.impl.juel.SimpleContext;
import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.IdentityLink;
import org.activiti.engine.task.Task;
import org.activiti.image.ProcessDiagramGenerator;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.multipart.MultipartFile;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <p>
* 服务实现类
* </p>
*
* @author jobob
* @since 2019-05-08
*/
@Service
public class ProcessFileServiceImpl extends ServiceImpl<ProcessFileMapper, TemplateProcessFileDO> implements IProcessFileService {
/* @Autowired
private RuntimeService runtimeService;
@Autowired
private TaskService taskService;
@Autowired
private HistoryService historyService;
@Autowired
private RepositoryService repositoryService;
@Autowired
IdentityService identityService;
@Autowired
ProcessEngineConfiguration processEngineConfiguration;
@Autowired
ProcessEngine processEngineFactory;
@Autowired
private ProcessEngine processEngine;
@Autowired
private WorkApproveMapper workApproveMapper;
@Autowired
TbUserMapper tbUserMapper;
@Autowired
private ITaskDataService taskDataService;
@Autowired
private WorkBaseMapper workBaseMapper;
@Autowired
private ITaskInfoService taskInfoService;
@Autowired
private IWorkBaseService workBaseService;*/
@Value("${template.processfile.path}")
private String processPath;
Logger logger = LoggerFactory.getLogger(ProcessFileServiceImpl.class);
/* *//**
* 上传流程文件并与模板建立关联(一个模板对应一个唯一的流程文件)
*
* @param file
* @param tempId
* @param savePath
* @return
*//*
@Override
@Transactional
public boolean uploadProcessFile(MultipartFile file, String tempId, String savePath) {
try {
//先清除之前与模板关联的流程文件
QueryWrapper qw = new QueryWrapper();
qw.eq("TEMPLATE_ID", tempId);
List<TemplateProcessFileDO> list = baseMapper.selectList(qw);
if (list != null && !list.isEmpty()) {
for (TemplateProcessFileDO pf : list) {
baseMapper.deleteById(pf.getId());
}
}
//保存上传文件路劲
TemplateProcessFileDO templateProcessFileDO = new TemplateProcessFileDO();
templateProcessFileDO.setId(IdUtil.randomUUID());
templateProcessFileDO.setProcessFilePath(savePath + file.getOriginalFilename());
templateProcessFileDO.setTemplateId(tempId);
templateProcessFileDO.setProcessFileNm(file.getOriginalFilename());
//默认“未部署”
templateProcessFileDO.setIfDeploy("0");
baseMapper.insert(templateProcessFileDO);
return true;
} catch (Exception e) {
logger.error(e.getMessage());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return false;
}*/
/**
* 上传流程文件并与模板建立关联(一个模板对应一个唯一的流程文件)
*
* @param fileName
* @param tempId
* @param savePath
* @return
*/
@Override
@Transactional
public boolean uploadProcessFileByFileName(String fileName, String tempId, String savePath) {
try {
//先清除之前与模板关联的流程文件
QueryWrapper qw = new QueryWrapper();
qw.eq("TEMPLATE_ID", tempId);
List<TemplateProcessFileDO> list = baseMapper.selectList(qw);
if (list != null && !list.isEmpty()) {
for (TemplateProcessFileDO pf : list) {
baseMapper.deleteById(pf.getId());
}
}
//保存上传文件路劲
TemplateProcessFileDO templateProcessFileDO = new TemplateProcessFileDO();
templateProcessFileDO.setId(IdUtil.randomUUID());
templateProcessFileDO.setProcessFilePath(fileName);
templateProcessFileDO.setTemplateId(tempId);
templateProcessFileDO.setProcessFileNm(fileName);
//默认“未部署”
templateProcessFileDO.setIfDeploy("0");
int insert = baseMapper.insert(templateProcessFileDO);
return true;
} catch (Exception e) {
logger.error(e.getMessage());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return false;
}
/* *//**
* 根据流程文件获取流程文件的唯一ID
*
* @param bpmnName
* @return
*//*
@Override
public String queryBPMNkey(String bpmnName) {
File processFile = new File(processPath + bpmnName);
XMLInputFactory xif = XMLInputFactory.newInstance();
InputStreamReader in;
XMLStreamReader xtr;
String bpmnKey = "";
try {
in = new InputStreamReader(new FileInputStream(processFile));
xtr = xif.createXMLStreamReader(in);
BpmnModel model = new BpmnXMLConverter().convertToBpmnModel(xtr);
if (model != null) {
List<Process> process = model.getProcesses();
bpmnKey = process.get(0).getId();
}
} catch (Exception e) {
logger.error("文件读取错误");
}
return bpmnKey;
}*/
/*
*/
/**
* 发起流程
*
* @param key 流程key
* @param bussinessKey 业务key,可为null
* @param formjson 表单数据
* @param variablesjson 其他变量数据
* @param userId 发起人id
* @param userName 发起人姓名
* @return 流程实例id
*//*
@Override
public String startProcess(String key, String bussinessKey, String formjson, Map variablesjson, String userId, String userName,
String templateId) {
//设置流程变量
Map<String, Object> variables = new HashMap<>();
//查询表单所有变量
QueryWrapper qw = new QueryWrapper();
qw.eq("WORK_ID", bussinessKey);
List<TaskDataDO> taskDataDOList = taskDataService.list(qw);
for (TaskDataDO taskDataDO : taskDataDOList) {
variables.put(taskDataDO.getFieldId(), taskDataDO.getFieldValue());
}
variables.put("flag","1");
MTMyInfoRspDTO.CorpUsersBean.CorpBean.DeptsBean dept = workBaseService.getUserDept();
variables.put("deptId",dept.getId());
try {
identityService.setAuthenticatedUserId(userId);
ExecutionEntity instance = (ExecutionEntity) runtimeService.startProcessInstanceByKey(key, bussinessKey, variables);
List<Task> nextTaskList = taskService
.createTaskQuery()
.processInstanceId(instance.getProcessInstanceId())
.list();
//启动流程回调
taskInfoService.startProcessCallback(nextTaskList,bussinessKey,userId);
return instance.getProcessInstanceId();
} catch (Exception e) {
logger.error("发起流程失败");
}
return null;
}
*/
/* *//**
* 此方法描述的是: 查看我的任务列表
*
* @param assignee
* @return List<Task>
*//*
@Override
public List<TaskResDTO> getTasks(String assignee) {
List<Task> tasks = taskService.createTaskQuery().taskCandidateOrAssigned(assignee).orderByTaskCreateTime().desc().list();
List<TaskResDTO> vos = new ArrayList<>();
for (Task task : tasks) {
TaskResDTO vo = new TaskResDTO();
Object formdata = taskService.getVariable(task.getId(), "formData");
vo.setTaskId(task.getId());
vo.setTaskName(task.getName());
vo.setTaskDefinitionKey(task.getTaskDefinitionKey());
vo.setProcDefId(task.getProcessDefinitionId());
vo.setProInsId(task.getProcessInstanceId());
if (formdata != null) {
Map maps = (Map) JSON.parse(formdata.toString());
vo.setFormdata(maps);
}
vos.add(vo);
}
return vos;
}
*/
/* @Override
public List<TaskResDTO> getHistoryTasks(String assignee) {
List<HistoricTaskInstance> hisTaskList = historyService.createHistoricTaskInstanceQuery().taskCandidateUser(assignee).orderByTaskId().desc()
.list();
List<HistoricTaskInstance> hisTaskList2 = historyService.createHistoricTaskInstanceQuery().taskAssignee(assignee).orderByTaskId().desc()
.list();
hisTaskList.addAll(hisTaskList2);
List<TaskResDTO> vos = new ArrayList<>();
for (HistoricTaskInstance task : hisTaskList) {
TaskResDTO vo = new TaskResDTO();
vo.setTaskId(task.getId());
vo.setTaskName(task.getName());
vo.setTaskDefinitionKey(task.getTaskDefinitionKey());
vo.setProcDefId(task.getProcessDefinitionId());
vo.setProInsId(task.getProcessInstanceId());
vos.add(vo);
}
return vos;
}
*/
/**
* 获取用户在某流程实例中的待办
*
* @param assignee
* @param processId
* @return
*//*
@Override
public Task getSingleTask(String assignee, String processId) {
List<Task> tasks = taskService.createTaskQuery().taskCandidateOrAssigned(assignee).orderByTaskCreateTime().desc().list();
if (tasks != null) {
for (Task task : tasks) {
if (processId.equals(task.getProcessInstanceId())) {
return task;
}
}
}
return null;
}
*/
/* *//**
* 通过任务id获取任务信息
*
* @param taskid
* @return
*//*
@Override
public TaskResDTO getTaskbyId(String taskid,String userId,String taskStatus) {
TaskResDTO vo = new TaskResDTO();
if("0".equals(taskStatus)){
Task tasks = taskService.createTaskQuery().taskId(taskid).singleResult();
vo.setTaskId(tasks.getId());
vo.setTaskName(tasks.getName());
vo.setTaskDefinitionKey(tasks.getTaskDefinitionKey());
vo.setProcDefId(tasks.getProcessDefinitionId());
vo.setProInsId(tasks.getProcessInstanceId());
vo.setActivityId(tasks.getTaskDefinitionKey());
}else{
List<HistoricTaskInstance> hisTaskList = historyService.createHistoricTaskInstanceQuery().taskCandidateUser(userId).orderByTaskId().desc()
.list();
for (HistoricTaskInstance task : hisTaskList) {
if(taskid.equals(task.getId())){
vo.setTaskId(task.getId());
vo.setTaskName(task.getName());
vo.setTaskDefinitionKey(task.getTaskDefinitionKey());
vo.setProcDefId(task.getProcessDefinitionId());
vo.setProInsId(task.getProcessInstanceId());
vo.setActivityId(task.getTaskDefinitionKey());
TaskResDTO taskResDTO = getCurrentTask(task.getProcessInstanceId());
vo.setCandidates(taskResDTO.getCandidates());
}
}
}
return vo;
}*/
/* *//**
* 方法描述:获取流程当前任务节点
*
* @param processInstanceId
* @return
*//*
@Override
public TaskResDTO getCurrentTask(String processInstanceId) {
List<Task> tasks = taskService.createTaskQuery().processInstanceId(processInstanceId).orderByTaskCreateTime().desc().list();
TaskResDTO vo = new TaskResDTO();
// 已经完结
if (tasks == null || tasks.isEmpty()) {
List<HistoricVariableInstance> list = historyService.createHistoricVariableInstanceQuery().processInstanceId(processInstanceId).list();
for (HistoricVariableInstance hi : list) {
if (hi.getVariableName().equalsIgnoreCase("formData")) {
vo.setProInsId(processInstanceId);
Object formdata = hi.getValue();
if (formdata != null) {
Map maps = (Map) JSON.parse(formdata.toString());
vo.setFormdata(maps);
}
}
if (hi.getVariableName().equalsIgnoreCase("protitle")) {
vo.setProTitle(hi.getValue().toString());
}
}
HistoricActivityInstance instances =
historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).listPage(1, 1).get(0);
vo.setProcDefId(instances.getProcessDefinitionId());
vo.setCandidates(null);
vo.setTaskId("-1");
vo.setTaskName("已完结");
} else {
Task task = tasks.get(0);
Object formdata = taskService.getVariable(task.getId(), "formData");
vo.setTaskId(task.getId());
vo.setTaskName(task.getName());
vo.setTaskDefinitionKey(task.getTaskDefinitionKey());
vo.setProcDefId(task.getProcessDefinitionId());
vo.setProInsId(task.getProcessInstanceId());
vo.setCreateTime(task.getCreateTime());
if (formdata != null) {
Map maps = (Map) JSON.parse(formdata.toString());
vo.setFormdata(maps);
}
List<String> peoples = new ArrayList<>();
for (Task tt : tasks) {
List<IdentityLink> lt = taskService.getIdentityLinksForTask(tt.getId());
for (IdentityLink identityLink : lt) {
String tempUserId = identityLink.getUserId();
peoples.add(tempUserId);
}
}
vo.setCandidates(peoples);
}
return vo;
}
*/
/* *//**
* 流程撤回
*
* @param taskId
* @return
*//*
@Override
public boolean retract(String taskId) {
return true;
}
*//**
* 中止流程
* @param processId 流程实例id
* @return
*//*
@Override
public boolean stopProcess(String processId) {
try{
runtimeService.deleteProcessInstance(processId,"中止流程");
return true;
}catch(Exception e){
e.printStackTrace();
logger.error(e.getMessage());
}
return false;
}
*/
/**
* 任务转交
* 1.删除原任务候选人
* 2.增加新的任务候选人
* @param taskId
* @param userId
* @param transferUserIds
* @return
*//*
@Override
public boolean transferTask(String taskId, String userId, String transferUserIds) {
try{
String[] transferUserIdArr = transferUserIds.split(",");
if(transferUserIdArr != null && transferUserIdArr.length > 0){
taskService.deleteCandidateUser(taskId,userId);
for(String transferUserId : transferUserIdArr){
taskService.addCandidateUser(taskId,transferUserId);
}
return true;
}
}catch(Exception e){
e.printStackTrace();
logger.error(e.getMessage());
}
return false;
}
*/
/**
* 查询流程当前节点的下一步节点。用于流程提示时的提示。
* @param taskId
* @return
* @throws Exception
*//*
public Map<String, FlowNode> findNextTask(String taskId,String workId){
try{
Map<String, FlowNode> nodeMap = new HashMap<String, FlowNode>();
ProcessInstance processInstance = findProcessInstanceByTaskId(taskId);
//查询流程定义 。
BpmnModel bpmnModel = repositoryService.getBpmnModel(processInstance.getProcessDefinitionId());
List<Process> listp = bpmnModel.getProcesses();
Process process = listp.get(0);
//当前节点流定义
Task task=taskService.createTaskQuery() // 创建任务查询
.taskId(taskId) // 根据任务id查询
.singleResult();
FlowNode sourceFlowElement = ( FlowNode) process.getFlowElement(task.getTaskDefinitionKey());
// 找到当前任务的流程变量
List<HistoricVariableInstance> listVar=historyService.createHistoricVariableInstanceQuery().processInstanceId(processInstance.getId()).list() ;
iteratorNextNodes(process, sourceFlowElement, nodeMap,listVar,workId);
return nodeMap;
}catch(Exception e){
e.printStackTrace();
}
return null;
}
*/
/* private ProcessInstance findProcessInstanceByTaskId(String taskId){
Task task=taskService.createTaskQuery() // 创建任务查询
.taskId(taskId) // 根据任务id查询
.singleResult();
String processInstanceId=task.getProcessInstanceId(); // 获取流程实例id
ProcessInstance pi = runtimeService.createProcessInstanceQuery() // 根据流程实例id获取流程实例
.processInstanceId(processInstanceId)
.singleResult();
return pi;
}
*/
/* *//**
* 查询流程当前节点的下一步节点。用于流程提示时的提示。
* @param process
* @param sourceFlowElement
* @param nodeMap
* @param listVar
* @throws Exception
*//*
private void iteratorNextNodes(Process process, FlowNode sourceFlowElement, Map<String, FlowNode> nodeMap,List<HistoricVariableInstance> listVar,String workId)
throws Exception {
List<SequenceFlow> list = sourceFlowElement.getOutgoingFlows();
for (SequenceFlow sf : list) {
sourceFlowElement = ( FlowNode) process.getFlowElement( sf.getTargetRef());
if(StringUtils.isNotEmpty(sf.getConditionExpression() )){
ExpressionFactory factory = new ExpressionFactoryImpl();
SimpleContext context = new SimpleContext();
for(HistoricVariableInstance var :listVar){
context.setVariable(var.getVariableName(), factory.createValueExpression(var.getValue(), var.getValue().getClass()));
}
QueryWrapper qw = new QueryWrapper();
qw.eq("WORK_ID", workId);
List<TaskDataDO> taskDataDOList = taskDataService.list(qw);
for (TaskDataDO taskDataDO : taskDataDOList) {
context.setVariable(taskDataDO.getFieldId(), factory.createValueExpression(taskDataDO.getFieldValue(),String.class));
}
MTMyInfoRspDTO.CorpUsersBean.CorpBean.DeptsBean dept = workBaseService.getUserDept();
if(dept != null){
context.setVariable("deptId",factory.createValueExpression(dept.getId(),String.class));
}
context.setVariable("flag",factory.createValueExpression("1",String.class));
ValueExpression e = factory.createValueExpression(context, sf.getConditionExpression(), boolean.class);
if((Boolean)e.getValue(context)){
nodeMap.put(sourceFlowElement.getId(), sourceFlowElement);
break;
}
}
logger.info(String.valueOf(sourceFlowElement.isNotExclusive()));
if (sourceFlowElement instanceof org.activiti.bpmn.model.UserTask) {
nodeMap.put(sourceFlowElement.getId(), sourceFlowElement);
}else if (sourceFlowElement instanceof org.activiti.bpmn.model.ExclusiveGateway || !sourceFlowElement.isNotExclusive()) {
iteratorNextNodes(process, sourceFlowElement, nodeMap,listVar,workId);
}
}
}
*/
/*
*/
/**
* 获取流程图像,已执行节点和流程线高亮显示
*//*
public InputStream getActivitiProccessImage(String pProcessInstanceId) {
//logger.info("[开始]-获取流程图图像");
try {
// 获取历史流程实例
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
.processInstanceId(pProcessInstanceId).singleResult();
if (historicProcessInstance == null) {
//throw new BusinessException("获取流程实例ID[" + pProcessInstanceId + "]对应的历史流程实例失败!");
}
else
{
// 获取流程定义
ProcessDefinitionEntity processDefinition = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService)
.getDeployedProcessDefinition(historicProcessInstance.getProcessDefinitionId());
// 获取流程历史中已执行节点,并按照节点在流程中执行先后顺序排序
List<HistoricActivityInstance> historicActivityInstanceList = historyService.createHistoricActivityInstanceQuery()
.processInstanceId(pProcessInstanceId).orderByHistoricActivityInstanceId().asc().list();
// 已执行的节点ID集合
List<String> executedActivityIdList = new ArrayList<String>();
int index = 1;
//logger.info("获取已经执行的节点ID");
for (HistoricActivityInstance activityInstance : historicActivityInstanceList) {
executedActivityIdList.add(activityInstance.getActivityId());
//logger.info("第[" + index + "]个已执行节点=" + activityInstance.getActivityId() + " : " +activityInstance.getActivityName());
index++;
}
BpmnModel bpmnModel = repositoryService.getBpmnModel(historicProcessInstance.getProcessDefinitionId());
// 已执行的线集合
List<String> flowIds = new ArrayList<String>();
// 获取流程走过的线 (getHighLightedFlows是下面的方法)
flowIds = getHighLightedFlows(bpmnModel,processDefinition, historicActivityInstanceList);
// 获取流程图图像字符流
ProcessDiagramGenerator pec = processEngineFactory.getProcessEngineConfiguration().getProcessDiagramGenerator();
//配置字体
InputStream imageStream = pec.generateDiagram(bpmnModel, "png", executedActivityIdList, flowIds,"宋体","微软雅黑","黑体",null,2.0);
return imageStream;
}
//logger.info("[完成]-获取流程图图像");
} catch (Exception e) {
System.out.println(e.getMessage());
//logger.error("【异常】-获取流程图失败!" + e.getMessage());
//throw new BusinessException("获取流程图失败!" + e.getMessage());
}
return null;
}
*/
/* public List<String> getHighLightedFlows(BpmnModel bpmnModel,ProcessDefinitionEntity processDefinitionEntity,List<HistoricActivityInstance> historicActivityInstances)
{
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //24小时制
List<String> highFlows = new ArrayList<String>();// 用以保存高亮的线flowId
for (int i = 0; i < historicActivityInstances.size() - 1; i++)
{
// 对历史流程节点进行遍历
// 得到节点定义的详细信息
FlowNode activityImpl = (FlowNode)bpmnModel.getMainProcess().getFlowElement(historicActivityInstances.get(i).getActivityId());
List<FlowNode> sameStartTimeNodes = new ArrayList<FlowNode>();// 用以保存后续开始时间相同的节点
FlowNode sameActivityImpl1 = null;
HistoricActivityInstance activityImpl_ = historicActivityInstances.get(i);// 第一个节点
HistoricActivityInstance activityImp2_ ;
for(int k = i + 1 ; k <= historicActivityInstances.size() - 1; k++)
{
activityImp2_ = historicActivityInstances.get(k);// 后续第1个节点
if ( activityImpl_.getActivityType().equals("userTask") && activityImp2_.getActivityType().equals("userTask") &&
df.format(activityImpl_.getStartTime()).equals(df.format(activityImp2_.getStartTime())) ) //都是usertask,且主节点与后续节点的开始时间相同,说明不是真实的后继节点
{
}
else
{
sameActivityImpl1 = (FlowNode)bpmnModel.getMainProcess().getFlowElement(historicActivityInstances.get(k).getActivityId());//找到紧跟在后面的一个节点
break;
}
}
sameStartTimeNodes.add(sameActivityImpl1); // 将后面第一个节点放在时间相同节点的集合里
for (int j = i + 1; j < historicActivityInstances.size() - 1; j++)
{
HistoricActivityInstance activityImpl1 = historicActivityInstances.get(j);// 后续第一个节点
HistoricActivityInstance activityImpl2 = historicActivityInstances.get(j + 1);// 后续第二个节点
if (df.format(activityImpl1.getStartTime()).equals(df.format(activityImpl2.getStartTime())) )
{// 如果第一个节点和第二个节点开始时间相同保存
FlowNode sameActivityImpl2 = (FlowNode)bpmnModel.getMainProcess().getFlowElement(activityImpl2.getActivityId());
sameStartTimeNodes.add(sameActivityImpl2);
}
else
{// 有不相同跳出循环
break;
}
}
List<SequenceFlow> pvmTransitions = activityImpl.getOutgoingFlows() ; // 取出节点的所有出去的线
for (SequenceFlow pvmTransition : pvmTransitions)
{// 对所有的线进行遍历
FlowNode pvmActivityImpl = (FlowNode)bpmnModel.getMainProcess().getFlowElement( pvmTransition.getTargetRef());// 如果取出的线的目标节点存在时间相同的节点里,保存该线的id,进行高亮显示
if (sameStartTimeNodes.contains(pvmActivityImpl)) {
highFlows.add(pvmTransition.getId());
}
}
}
return highFlows;
}
*/
}
package com.zgiot.zx.workflow.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zgiot.zx.workflow.entity.TemplateGatewayDO;
import com.zgiot.zx.workflow.mapper.ProcessGatewayMapper;
import com.zgiot.zx.workflow.service.IProcessGatewayService;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author wangxiahui
* @since 2019-05-28
*/
@Service
public class ProcessGatewayServiceImpl extends ServiceImpl<ProcessGatewayMapper, TemplateGatewayDO> implements IProcessGatewayService {
}
package com.zgiot.zx.workflow.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.generator.config.IFileCreate;
import com.zgiot.zx.workflow.entity.*;
import com.zgiot.zx.workflow.mapper.*;
import lombok.extern.slf4j.Slf4j;
import org.activiti.bpmn.converter.BpmnXMLConverter;
import org.activiti.bpmn.model.Process;
import org.activiti.bpmn.model.*;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.Deployment;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.*;
//activiti动态读取xml文件
@Slf4j
@Component
public class ReadBpmn {
@Value("${template.processfile.path}")
private String processPath;
private static final String REJECT = "驳回";
private static final String PASS = "通过";
private static final String ASSIGNEE = "#{START_USER}";
@Autowired
private WorkApproveMapper workApproveMapper;
@Autowired
private SUserMapper sUserMapper;
@Autowired
private SRoleMapper sRoleMapper;
@Autowired
private ProcessFileMapper processFileMapper;
@Autowired
RepositoryService repositoryService;
@Autowired
private ProcessGatewayMapper processGatewayMapper;
public List<String> newProcessFile(String filePath, String templateId) throws IOException, XMLStreamException {
String fileNamePath = processPath;
InputStream inputStream = new FileInputStream(fileNamePath + filePath);
//通过模板id查询approve表信息;
QueryWrapper<TemplateApproveDO> qw = new QueryWrapper<>();
qw.eq("template_id", templateId);
//根据模板id查询网关表信息;
QueryWrapper<TemplateGatewayDO> qw1 = new QueryWrapper<>();
qw1.eq("template_id",templateId);
List<TemplateGatewayDO> templateGatewayDOS = processGatewayMapper.selectList(qw1);
List<TemplateApproveDO> list = workApproveMapper.selectList(qw);
//设置角色
List<Map<String, List<String>>> assignees = new ArrayList<>();
Map<String, List<String>> assigneeMap = new HashMap<>();
List<String> names = null;
//设置角色
List<Map<String, List<String>>> candidateGroups = new ArrayList<>();
Map<String, List<String>> candidateMap = new HashMap<>();
for (TemplateApproveDO templateApproveDO : list) {
names = new ArrayList<>();
if ("1".equals(templateApproveDO.getPersonType())) {
String personData = templateApproveDO.getPersonData();
String[] split = personData.split(",");
for (int i = 0; i < split.length; i++) {
SUser sUser = sUserMapper.selectById(split[i]);
if (sUser!=null) {
names.add(sUser.getName());
}
}
assigneeMap.put(templateApproveDO.getActivityId(), names);
assignees.add(assigneeMap);
} else{
String personData = templateApproveDO.getPersonData();
String[] split = personData.split(",");
for (int i = 0; i < split.length; i++) {
SRole sRole = sRoleMapper.selectById(split[i]);
if (sRole!=null) {
log.debug("---------------" + sRole.getCode());
names.add(sRole.getCode());
}
}
candidateMap.put(templateApproveDO.getActivityId(), names);
candidateGroups.add(candidateMap);
}
}
/* List<Map<String, List<String>>> candidateGroups = new ArrayList<>();
Map<String, List<String>> candidateMap = new HashMap<>();
List<String> tasklist1 = new ArrayList<>();
tasklist1.add("业务部门一");
tasklist1.add("业务部门三");
candidateMap.put("userTask1", tasklist1);
List<String> tasklist2 = new ArrayList<>();
tasklist2.add("业务部门二");
tasklist2.add("业务部门三");
candidateMap.put("userTask2", tasklist2);
candidateGroups.add(candidateMap);
//设置活动id和与之对应的角色
List<Map<String, List<String>>> assignees = new ArrayList<>();
Map<String, List<String>> assigneeMap = new HashMap<>();
List<String> names = new ArrayList<>();
names.add("张三");
names.add("李四");
assigneeMap.put("userTask1", names);
List<String> names1 = new ArrayList<>();
names1.add("王二");
names1.add("麻子");
assigneeMap.put("userTask2", names1);
assignees.add(assigneeMap);*/
//创建bpmnxml解析对象
BpmnXMLConverter converter = new BpmnXMLConverter();
XMLInputFactory factory = XMLInputFactory.newInstance();
BpmnModel bpmnModel = converter.convertToBpmnModel(factory.createXMLStreamReader(inputStream));
Process process = bpmnModel.getMainProcess();
//取出所有元素
Collection<FlowElement> userTaskList = process.getFlowElements();
//把经过的任务节点保存到list中
List<UserTask> userTasks = new ArrayList<>();
//遍历查询其中为userTask类型的元素
process.findFlowElementsOfType(UserTask.class).forEach(userTask -> {
userTasks.add(userTask);
List<SequenceFlow> sequenceFlows = userTask.getOutgoingFlows();
//2.设置线的判断条件
//获取为userTask类型的节点,并获取其向外发出去的线
//任务连接大于2条,则说明其有驳回和通过处理
for (SequenceFlow flow : sequenceFlows) {
if (StringUtils.isNotEmpty(flow.getName())) {
flow.setConditionExpression("#{message=='" + flow.getName() + "'}");
}
/*if (flow.getName().equals(REJECT)) {
//如果此节点指向第一个任务节点,则为驳回(3)
flow.setConditionExpression("#{message==\"3\"}");
} else if (flow.getName().equals(PASS)) {
//反之设为通过
flow.setConditionExpression("#{message==\"2\"}");
}*/
}
});
//获取所有排他网关
process.findFlowElementsOfType(Gateway.class).forEach(gateway -> {
List<SequenceFlow> outgoingFlows = gateway.getOutgoingFlows();
//设置线的判断条件
for (SequenceFlow sequenceFlow: outgoingFlows) {
//遍历模板对应的全部网关
for (TemplateGatewayDO templateGatewayDO: templateGatewayDOS) {
if (templateGatewayDO.getActivityId().equals(sequenceFlow.getId())){
String Condition = templateGatewayDO.getConditions().substring(8);
sequenceFlow.setConditionExpression(Condition);
break;
}
}
}
});
//对所有活动节点进行遍历,找到节点类型为endEvent的
FlowElement startElement = null;
for (FlowElement flowElement : userTaskList) {
//添加监听
if (flowElement.getClass().equals(EndEvent.class)&&flowElement.getClass()!=null) {
//如果元素名称为 endEvent就添加监听
List<ActivitiListener> listeners = new ArrayList<>();
ActivitiListener activitiListener = new ActivitiListener();
activitiListener.setEvent("end");
activitiListener.setImplementationType("class");
activitiListener.setImplementation("org.rcisoft.common.ProcessStatusListener");
listeners.add(activitiListener);
flowElement.setExecutionListeners(listeners);
} else if (flowElement.getClass().equals(StartEvent.class)) {
startElement = flowElement;
}
}
List<String> activitIds = new ArrayList<>();
String activitId1 = "";
for (UserTask userTask : userTasks) {
if (userTask.getIncomingFlows().size()>0){
activitId1 = userTask.getId();
activitIds.add(activitId1);
}
}
String activitId = "";
for (UserTask userTask : userTasks) {
if (userTask.getIncomingFlows().size()>0&&userTask.getIncomingFlows().get(0).getSourceRef().equals(startElement.getId())){
activitId = userTask.getId();
}
}
for (UserTask userTask : userTasks) {
if (startElement.getId().equals(userTask.getIncomingFlows().get(0).getSourceRef())) {
userTask.setAssignee(ASSIGNEE);
} else {
if (candidateGroups!=null){
for (Map<String, List<String>> candidateGroup : candidateGroups) {
if (candidateGroup.containsKey(userTask.getId())) {
//设置角色
userTask.setCandidateGroups(candidateGroup.get(userTask.getId()));
}
}
}
if (assignees!=null){
for (Map<String, List<String>> assignee : assignees) {
if (assignee.containsKey(userTask.getId())) {
//设置组任务,任务办理人
userTask.setCandidateUsers(assignee.get(userTask.getId()));
}
}
}
}
}
/* if (userTask.getOutgoingFlows().size()<2) {
System.out.println("首节点:"+userTasks.get(0));
userTasks.get(0).setAssignee(ASSIGNEE);
} else if (userTask.getOutgoingFlows().size()>1){
//1.为其设置任务角色和办理人
System.out.println("UserTask类型ID:" + userTask.getId());*/
// 这行代码是重新布局
// new BpmnAutoLayout(bpmnModel).execute();
String filename = String.valueOf(UUID.randomUUID());
String filepath = filename + ".bpmn";
processFileMapper.updateNewProcessFile(filepath,templateId,activitId);
Files.write(Paths.get(processPath + filepath),
converter.convertToXML(bpmnModel));
FileInputStream fileInputStream = new FileInputStream(processPath+filepath);
Deployment deploy = repositoryService.createDeployment().name(filename).addInputStream(filepath, fileInputStream).deploy();
return activitIds ;
}
}
package com.zgiot.zx.workflow.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zgiot.zx.workflow.dto.MTUserInfoRspDTO;
import com.zgiot.zx.workflow.entity.TemplateApproveDO;
import com.zgiot.zx.workflow.enums.TemplateApproveType;
import com.zgiot.zx.workflow.mapper.WorkApproveMapper;
import com.zgiot.zx.workflow.service.IWorkApproveService;
import com.zgiot.zx.workflow.utils.MTCotactApiRequestClient;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.*;
/**
* <p>
* 服务实现类
* </p>
*
* @author jobob
* @since 2019-05-16
*/
@Service
public class WorkApproveServiceImpl extends ServiceImpl<WorkApproveMapper, TemplateApproveDO> implements IWorkApproveService {
Logger logger = LoggerFactory.getLogger(WorkApproveServiceImpl.class);
private static final String TEMPLATE_ID = "TEMPLATE_ID";
private static final String ACTIVITY_ID = "ACTIVITY_ID";
/* @Autowired
private IWorkflowApproveDataService workflowApproveDataService;
@Autowired
private MTCotactApiRequestClient mtCotactApiRequestClient;*/
/* @Override
@Transactional
public Boolean saveWorkApprove(TemplateApproveDO templateApproveDO) {
try {
if (templateApproveDO.getTemplateId() == null || "".equals(templateApproveDO.getTemplateId())) {
return false;
}
if (templateApproveDO.getActivityId() == null || "".equals(templateApproveDO.getActivityId())) {
return false;
}
QueryWrapper deleteQw = new QueryWrapper();
deleteQw.eq(TEMPLATE_ID, templateApproveDO.getTemplateId());
deleteQw.eq(ACTIVITY_ID, templateApproveDO.getActivityId());
//保存前先清除之前的数据
baseMapper.delete(deleteQw);
templateApproveDO.setId(UUID.randomUUID().toString().replace("-", ""));
baseMapper.insert(templateApproveDO);
return true;
} catch (Exception e) {
logger.error(e.getMessage());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return false;
}*/
@Override
@Transactional
public Boolean saveWorkApproveBatch(List<TemplateApproveDO> templateApproveDOList) {
Set<String> activityList = new HashSet<>();
for (TemplateApproveDO templateApproveDO : templateApproveDOList) {
if (templateApproveDO.getTemplateId() == null || "".equals(templateApproveDO.getTemplateId())) {
return false;
}
if (templateApproveDO.getActivityId() == null || "".equals(templateApproveDO.getActivityId())) {
return false;
}
//数据校验,节点是否重复提交
activityList.add(templateApproveDO.getActivityId());
QueryWrapper deleteQw = new QueryWrapper();
deleteQw.eq(TEMPLATE_ID, templateApproveDO.getTemplateId());
deleteQw.eq(ACTIVITY_ID, templateApproveDO.getActivityId());
//保存前先清除之前的数据
baseMapper.delete(deleteQw);
templateApproveDO.setId(UUID.randomUUID().toString().replace("-", ""));
}
if (templateApproveDOList.size() != activityList.size()) {
return false;
}
return this.saveBatch(templateApproveDOList);
}
@Override
public List<TemplateApproveDO> getWorkApprove(String templateId) {
QueryWrapper qw = new QueryWrapper();
qw.eq(TEMPLATE_ID, templateId);
return baseMapper.selectList(qw);
}
/* @Override
public TemplateApproveDO getApproveByTempIdAndactivityId(String templateId, String acticitiId) {
QueryWrapper qw = new QueryWrapper();
qw.eq(TEMPLATE_ID, templateId);
qw.eq(ACTIVITY_ID, acticitiId);
return baseMapper.selectOne(qw);
}*/
/* @Override
public List<TemplateApproveDO> getCreatorSelectApprove(String templateId, String workId) {
TemplateApproveDO templateApproveDO = new TemplateApproveDO();
templateApproveDO.setPersonType(TemplateApproveType.CREATESELECT.getKey());
templateApproveDO.setWorkId(workId);
templateApproveDO.setTemplateId(templateId);
List<TemplateApproveDO> list = baseMapper.selectApproveData(templateApproveDO);
if(StringUtils.isBlank(workId)){
for(TemplateApproveDO templateApproveDO1 : list){
templateApproveDO1.setPersonData("");
}
}else{
List<String> userIdList = new ArrayList<>();
for(TemplateApproveDO t : list){
userIdList.add(t.getPersonData());
}
MTUserGetsReqDTO mtUserGetsReqDTO = new MTUserGetsReqDTO();
mtUserGetsReqDTO.setCorpId("6");
mtUserGetsReqDTO.setIds(userIdList);
List<MTUserInfoRspDTO> userList = mtCotactApiRequestClient.userGets(mtUserGetsReqDTO,null);
Map<String,MTUserInfoRspDTO> userMap = new HashMap();
for(MTUserInfoRspDTO mtUserInfoRspDTO : userList){
userMap.put(String.valueOf(mtUserInfoRspDTO.getId()),mtUserInfoRspDTO);
}
for(TemplateApproveDO t : list){
t.setMtUserInfoRspDTO(userMap.get(t.getPersonData()));
}
}
return list;
}
*/
/* @Override
public void updateCreateSelectApprove(String workApproveData,String workId) throws Exception{
JSONObject json = JSON.parseObject(workApproveData);
JSONArray approveData = json.getJSONArray("approveData");
List<TemplateApproveDataDO> templateApproveDataDOList = new ArrayList<TemplateApproveDataDO>();
if (approveData != null && !approveData.isEmpty()) {
for (Object obj : approveData) {
JSONObject jsonObject = (JSONObject) obj;
TemplateApproveDataDO templateApproveDataDO = new TemplateApproveDataDO();
templateApproveDataDO.setId(UUID.randomUUID().toString());
templateApproveDataDO.setPersonData(jsonObject.get("personData").toString());
templateApproveDataDO.setActivityId(jsonObject.get("activityId").toString());
templateApproveDataDO.setWorkId(workId);
templateApproveDataDOList.add(templateApproveDataDO);
}
if(!templateApproveDataDOList.isEmpty()){
QueryWrapper delQw = new QueryWrapper();
delQw.eq("work_id",workId);
//保存之前先根据工单id清除
workflowApproveDataService.remove(delQw);
workflowApproveDataService.saveBatch(templateApproveDataDOList);
}
}
}*/
}
package com.zgiot.zx.workflow.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zgiot.zx.workflow.dto.WorkPermissionInfoResDTO;
import com.zgiot.zx.workflow.dto.WorkPermissionResDTO;
import com.zgiot.zx.workflow.entity.TemplatePermissionDO;
import com.zgiot.zx.workflow.mapper.WorkPermissionMapper;
import com.zgiot.zx.workflow.mapper.WorkTemplateFieldMapper;
import com.zgiot.zx.workflow.service.IWorkPermissionService;
import lombok.extern.slf4j.Slf4j;
import org.activiti.bpmn.converter.BpmnXMLConverter;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.FlowElement;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.*;
/**
* <p>
* 服务实现类
* </p>
*
* @author jobob
* @since 2019-05-08
*/
@Service
@Slf4j
public class WorkPermissionServiceImpl extends ServiceImpl<WorkPermissionMapper, TemplatePermissionDO> implements IWorkPermissionService {
Logger logger = LoggerFactory.getLogger(WorkPermissionServiceImpl.class);
/*@Autowired
ProcessFileMapper processFileMapper;*/
/* @Autowired
WorkTemplateFieldMapper workTemplateFieldMapper;*/
/*@Override
public boolean saveWorkPermission(String jsonStr) {
try {
JSONObject json = JSON.parseObject(jsonStr);
String templateId = json.getString("templateId");
String activityId = json.getString("activityId");
if (activityId == null || "".equals(activityId)) {
return false;
}
//先通过流程节点ID清除掉之前的表单配置
QueryWrapper qw = new QueryWrapper();
qw.eq("ACTIVITY_ID", activityId);
baseMapper.delete(qw);
JSONArray template = json.getJSONArray("template");
List<TemplatePermissionDO> templatePermissionDOList = new ArrayList<>();
for (Object obj : template) {
JSONObject fieldJson = (JSONObject) obj;
TemplatePermissionDO templatePermissionDO = TemplatePermissionDO.builder().id(UUID.randomUUID().toString().replace("-", ""))
.templateId(templateId)
.activityId(activityId)
.permission(fieldJson.getString("permission"))
.fieldId(fieldJson.getString("fieldId")).build();
templatePermissionDOList.add(templatePermissionDO);
}
this.saveBatch(templatePermissionDOList);
return true;
} catch (Exception e) {
logger.error(e.getMessage());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return false;
}*/
@Override
public boolean saveWorkPermissionBatch(String jsonStr) {
try {
JSONArray jsonArray = JSON.parseArray(jsonStr);
jsonArray.size();
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject json = JSON.parseObject(jsonArray.get(i).toString());
String templateId = json.getString("templateId");
String activityId = json.getString("activityId");
if (activityId == null || "".equals(activityId)) {
return false;
}
if (templateId != null && !"".equals(templateId)) {
//先通过流程节点ID清除掉之前的表单配置
QueryWrapper qw = new QueryWrapper();
qw.eq("activity_id", activityId);
qw.eq("template_id", templateId);
baseMapper.delete(qw);
JSONArray template = json.getJSONArray("form");
List<TemplatePermissionDO> templatePermissionDOList = new ArrayList<>();
for (Object obj : template) {
JSONObject fieldJson = (JSONObject) obj;
TemplatePermissionDO templatePermissionDO = TemplatePermissionDO.builder().id(UUID.randomUUID().toString().replace("-", ""))
.templateId(templateId)
.activityId(activityId)
.permission(fieldJson.getString("permission"))
.fieldId(fieldJson.getString("fieldId"))
.ifWrite(fieldJson.getString("ifWrite")).build();
templatePermissionDOList.add(templatePermissionDO);
}
this.saveBatch(templatePermissionDOList);
}
}
return true;
} catch (Exception e) {
logger.error(e.getMessage());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return false;
}
@Override
public List<WorkPermissionInfoResDTO> getWorkPermissionByTemplateId(String templateId) {
List<WorkPermissionResDTO> WorkPermissionResDTOList = baseMapper.selectListByTemplateId(templateId);
Map<String,String> map = new HashMap<>();
for (WorkPermissionResDTO workPermissionResDTO :WorkPermissionResDTOList){
map.put(workPermissionResDTO.getActivityId(),"1");
}
List<WorkPermissionInfoResDTO> list = new ArrayList<>();
for (Map.Entry<String, String> entry : map.entrySet()) {
WorkPermissionInfoResDTO workPermissionInfoResDTO = new WorkPermissionInfoResDTO();
List<WorkPermissionResDTO> templatePermission = new ArrayList<>();
for (WorkPermissionResDTO wp : WorkPermissionResDTOList) {
if (entry.getKey().equals(wp.getActivityId())) {
templatePermission.add(wp);
}
}
workPermissionInfoResDTO.setTemplateId(templateId);
workPermissionInfoResDTO.setActivityId(entry.getKey());
workPermissionInfoResDTO.setForm(templatePermission);
list.add(workPermissionInfoResDTO);
}
return list;
}
/* @Override
public List<WorkPermissionResDTO> queryPermissionAndField(String templateId) {
//通过节点id查询查询表单信息
return baseMapper.queryPermissionAndFieldByNode("StartEvent_1", templateId);
}*/
/**
* 根据流程文件获取流程文件的唯一ID
*
* @param bpmnPath
* @return
*/
public String queryBPMNkey(String bpmnPath) {
File processFile = new File(bpmnPath);
XMLInputFactory xif = XMLInputFactory.newInstance();
InputStreamReader in;
XMLStreamReader xtr;
String activitiNodeId = "";
try {
in = new InputStreamReader(new FileInputStream(processFile));
xtr = xif.createXMLStreamReader(in);
BpmnModel model = new BpmnXMLConverter().convertToBpmnModel(xtr);
if (model != null) {
List<FlowElement> flowElements = (List) model.getMainProcess().getFlowElements();
activitiNodeId = flowElements.get(0).getId();
}
} catch (Exception e) {
logger.error("文件读取失败");
}
return activitiNodeId;
}
}
package com.zgiot.zx.workflow.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zgiot.zx.workflow.entity.TemplateFormFieldDO;
import com.zgiot.zx.workflow.mapper.WorkTemplateFieldMapper;
import com.zgiot.zx.workflow.service.IWorkTemplateFieldService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.ArrayList;
import java.util.List;
/**
* <p>
* 服务实现类
* </p>
*
* @author jobob
* @since 2019-05-08
*/
@Service
public class WorkTemplateFieldServiceImpl extends ServiceImpl<WorkTemplateFieldMapper, TemplateFormFieldDO> implements IWorkTemplateFieldService {
Logger logger = LoggerFactory.getLogger(WorkTemplateFieldServiceImpl.class);
@Override
@Transactional
public boolean saveOrUpdateWorkTempldateField(String templateId, String jsonStr) {
try {
JSONObject json = JSON.parseObject(jsonStr);
//保存前先清除之前的信息
QueryWrapper qw = new QueryWrapper();
qw.eq("TEMPLATE_ID", templateId);
baseMapper.delete(qw);
JSONArray array = json.getJSONArray("template");
List<TemplateFormFieldDO> insertList = new ArrayList<>();
if (array != null && !array.isEmpty()) {
for (Object obj : array) {
JSONObject levelFirst = (JSONObject) obj;
// JSONObject levelecond = levelFirst.getJSONObject("obj");
TemplateFormFieldDO wtf = TemplateFormFieldDO.builder().id(levelFirst.getString("id"))
.templateId(templateId)
.fieldNm(levelFirst.get("fieldNm").toString())
.fieldOrder(Integer.parseInt(levelFirst.get("fieldOrder").toString()))
.fieldTp(levelFirst.get("fieldTp").toString())
.major(levelFirst.get("major").toString())
.print(levelFirst.get("print").toString())
.required(levelFirst.get("required").toString())
.expand(levelFirst.get("expand").toString())
.build();
insertList.add(wtf);
}
this.saveBatch(insertList);
return true;
}
} catch (Exception e) {
logger.error(e.getMessage());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return false;
}
@Override
public boolean deleteWorkTempldateField(String templateId) {
try {
QueryWrapper qw = new QueryWrapper();
qw.eq("TEMPLATE_ID", templateId);
baseMapper.delete(qw);
return true;
} catch (Exception e) {
logger.error(e.getMessage());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return false;
}
@Override
public List<TemplateFormFieldDO> selectWorkTempldateField(String templateId) {
try {
QueryWrapper qw = new QueryWrapper();
qw.eq("TEMPLATE_ID", templateId);
List<TemplateFormFieldDO> f = baseMapper.selectList(qw);
return f;
} catch (Exception e) {
logger.error(e.getMessage());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return null;
}
/* @Override
public List<TemplateFormFieldDO> getWorkTempldateFieldList(String templateId) {
QueryWrapper qw = new QueryWrapper();
qw.eq("TEMPLATE_ID", templateId);
qw.orderByAsc("FIELD_ORDER");
return baseMapper.selectList(qw);
}*/
}
package com.zgiot.zx.workflow.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zgiot.zx.workflow.entity.TemplateOtherSettingsDO;
import com.zgiot.zx.workflow.mapper.WorkTemplateOtherSettingsMapper;
import com.zgiot.zx.workflow.service.IWorkTemplateOtherSettingsService;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author jobob
* @since 2019-05-21
*/
@Service
public class WorkTemplateOtherSettingsServiceImpl extends ServiceImpl<WorkTemplateOtherSettingsMapper, TemplateOtherSettingsDO> implements IWorkTemplateOtherSettingsService {
}
package com.zgiot.zx.workflow.service.impl;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.file.FileReader;
import cn.hutool.core.io.file.FileWriter;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zgiot.zx.workflow.base.Ret;
import com.zgiot.zx.workflow.dto.ActivitiResDTO;
import com.zgiot.zx.workflow.dto.TemplateTypeResDTO;
import com.zgiot.zx.workflow.dto.WorkPermissionInfoResDTO;
import com.zgiot.zx.workflow.dto.WorkTemplateResDTO;
import com.zgiot.zx.workflow.entity.*;
import com.zgiot.zx.workflow.mapper.*;
import com.zgiot.zx.workflow.service.*;
import lombok.extern.slf4j.Slf4j;
import org.activiti.bpmn.converter.BpmnXMLConverter;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.FlowElement;
import org.activiti.bpmn.model.UserTask;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.impl.RepositoryServiceImpl;
import org.activiti.engine.impl.pvm.ReadOnlyProcessDefinition;
import org.activiti.engine.impl.pvm.process.ActivityImpl;
import org.apache.commons.lang3.StringEscapeUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.*;
/**
* <p>
* 服务实现类
* </p>
*
* @author jobob
* @since 2019-05-08
*/
@Service
@Slf4j
public class WorkTemplateServiceImpl extends ServiceImpl<WorkTemplateMapper, TemplateDO> implements IWorkTemplateService {
private Logger logger = LoggerFactory.getLogger(WorkTemplateServiceImpl.class);
@Autowired
private ReadBpmn readBpmn;
@Autowired
private ProcessEngine processEngine;
@Autowired
private ProcessFileMapper processFileMapper;
@Autowired
private WorkTemplateMapper workTemplateMapper;
@Autowired
private ProcessGatewayHiMapper processGatewayHiMapper;
@Autowired
private WorkApproveHiMapper workApproveHiMapper;
/* @Autowired
private ProcessFileMapper processFileMapper;
@Autowired
private RepositoryService repositoryService;*/
@Autowired
private WorkApproveMapper workApproveMapper;
@Autowired
private WorkTypeMapper workTypeMapper;
@Autowired
private ProcessGatewayMapper processGatewayMapper;
@Autowired
private WorkPermissionHiMapper workPermissionHiMapper;
/* @Autowired
private TbUserMapper tbUserMapper;*/
@Autowired
private WorkflowTemplateHiRepository workflowTemplateHiRepository;
@Autowired
private TbRoleMapper tbRoleMapper;
@Autowired
private WorkApproveServiceImpl workApproveService;
@Autowired
private IWorkTemplateService workTemplateService;
@Autowired
private IWorkTemplateFieldService workTemplateFieldService;
@Autowired
private IProcessFileService iProcessFileService;
@Autowired
private IWorkPermissionService workPermissionService;
@Autowired
private IWorkTemplateOtherSettingsService workTemplateOtherSettingsService;
@Autowired
private WorkflowTaskService workflowTaskService;
/* @Autowired
private ProcessGatewayMapper processGatewayMapper;
@Autowired
private WorkBaseMapper workBaseMapper;*/
@Autowired
private IProcessGatewayService processGatewayService;
@Autowired
private WorkflowTaskHiRepository workflowTaskHiRepository;
/* @Autowired
private TaskServiceImpl taskServiceImpl;
*/
/* @Autowired
private TaskService taskService;
@Autowired
private ITaskDataService taskDataService;
@Autowired
private ITaskInfoService taskInfoService;
@Autowired
private IWorkRecordsService workRecordsService;
@Autowired
private WorkflowApproveDataMapper workflowApproveDataMapper;
@Autowired
private ITaskReadService taskReadService;*/
@Autowired
private WorkflowTaskHiService workflowTaskHiService;
@Autowired
private SRoleMapper sRoleMapper;
@Autowired
private WorkflowTemplateFormFieldHiRepository workflowTemplateFormFieldHiRepository;
@Autowired
private WorkflowTaskRepository workflowTaskRepository;
@Autowired
private WorkPermissionMapper workPermissionMapper;
@Autowired
private WorkPermissionMapper workApproveBytemplateFormFieldDO;
@Autowired
private RepositoryService repositoryService;
@Value("${template.processfile.path}")
private String processPath;
private static final String TEMPLATE_ID = "template_id";
private static final String XML_PATH = "xmlPath";
/* @Override
public Ret deployProcess(String templateId) {
String checkResult = checkTemplate(templateId);
if(!"SUCCESS".equals(checkResult)){
return Ret.error().setMsg(checkResult);
}
try {
QueryWrapper qw = new QueryWrapper();
qw.eq(TEMPLATE_ID, templateId);
List<TemplateProcessFileDO> list = processFileMapper.selectList(qw);
if (list != null && list.size() == 1) {
String processFile = list.get(0).getProcessFilePath();
String processName = list.get(0).getProcessFileNm();
//部署前把表达式写入到xml文件中
//查询表达式
QueryWrapper gerWayQw = new QueryWrapper<>();
gerWayQw.eq(TEMPLATE_ID, templateId);
List<TemplateGatewayDO> templateGatewayDOList = processGatewayMapper.selectList(gerWayQw);
for (TemplateGatewayDO templateGatewayDO : templateGatewayDOList) {
boolean flagFlowId = addConditionExpression(processFile, templateGatewayDO.getActivityId(), templateGatewayDO.getConditions());
if (!flagFlowId) {
return Ret.error().setMsg("流程部署失败");
}
}
repositoryService.createDeployment()
.name(UUID.randomUUID().toString()).addInputStream(processName, new FileInputStream(new File(processFile))).deploy();
TemplateProcessFileDO pf = new TemplateProcessFileDO();
pf.setIfDeploy("1");
QueryWrapper updateQw = new QueryWrapper();
updateQw.eq(TEMPLATE_ID, templateId);
int a = processFileMapper.update(pf, updateQw);
if (a > 0) {
//启用模板
TemplateDO templateDO = new TemplateDO();
templateDO.setId(templateId);
templateDO.setIfEnable("1");
QueryWrapper<TemplateDO> qw2 = new QueryWrapper<>();
qw2.eq("id", templateId);
workTemplateService.update(templateDO, qw2);
return Ret.ok().setMsg("流程部署成功");
}
}
} catch (Exception e) {
logger.error(e.getMessage());
}
return Ret.error().setMsg("流程部署失败");
}
*/
/**
* 模板校验
* 校验规则:1.开始节点、所有用户任务节点必须配置表单项
* 2.所有用户任务节点必须进行审批设置
*
* @return
*/
private String checkTemplate(String templateId) {
return "SUCCESS";
}
@Override
public List<TemplateTypeResDTO> getAllTemplates(String ifEnable, String ifPhone) {
List<TemplateTypeResDTO> result = new ArrayList<>();
List<TemplateTypeDO> templateTypeDOList = workTypeMapper.selectList(null);
for (TemplateTypeDO templateTypeDO : templateTypeDOList) {
QueryWrapper qw = new QueryWrapper();
qw.eq("work_tp_id", templateTypeDO.getId());
if (StrUtil.isNotEmpty(ifPhone)) {
qw.eq("PHONE", ifPhone);
}
if (StrUtil.isNotEmpty(ifEnable)) {
qw.eq("IF_ENABLE", ifEnable);
}
qw.orderByDesc("CREATE_TIME");
List<TemplateDO> templateList = baseMapper.selectList(qw);
for (TemplateDO templateDO : templateList) {
String[] strs = templateDO.getCreateRoles().split(",");
List list = Arrays.asList(strs);
List<SRole> tbRoles = sRoleMapper.selectBatchIds(list);
String rolesName = "";
for (SRole sRole : tbRoles) {
if (rolesName.equals("")) {
rolesName += sRole.getRoleName();
} else {
rolesName += "," + sRole.getRoleName();
}
}
templateDO.setCreateRoles(rolesName);
}
TemplateTypeResDTO templateTypeResDTO = new TemplateTypeResDTO();
templateTypeResDTO.setTemplateList(templateList);
templateTypeResDTO.setId(templateTypeDO.getId());
templateTypeResDTO.setName(templateTypeDO.getName());
templateTypeResDTO.setIfEnable(templateTypeDO.getIfEnable());
result.add(templateTypeResDTO);
}
return result;
}
/* */
/**
* 审批指定办理人
* <p>
* //@param templateId 模板id
*//*
@Override
public boolean tsakAssignee(String templateId, List<Task> task2List, String workId,String userId) {
try{
for (Task task2 : task2List) {
String activityId = task2.getTaskDefinitionKey();
String taskId = task2.getId();
//查询节点指定的用户
TemplateApproveDO templateApproveDO = workApproveService.getApproveByTempIdAndactivityId(templateId, activityId);
//设置办理人
if (templateApproveDO != null) {
List<String> reveiverUsers = new ArrayList<>();
String personType = templateApproveDO.getPersonType();
if (TemplateApproveType.PERSON.getKey().equals(personType)) {
if(StrUtil.isEmpty(templateApproveDO.getPersonData())){
System.out.println("没有审批人");
}
String[] users = templateApproveDO.getPersonData().split(",");
for(int i=0;i<users.length;i++){
processEngine.getTaskService()//
.addCandidateUser(taskId, users[i]);
}
reveiverUsers = Arrays.asList(users);
}
if (TemplateApproveType.ROLE.getKey().equals(personType)) {
//查询该角色对应的用户id
List<String> tbUserList = tbUserMapper.queryUserByRoleId(templateApproveDO.getPersonData().split(","));
for (String id : tbUserList) {
processEngine.getTaskService()//
.addCandidateUser(taskId, id);
}
reveiverUsers = tbUserList;
}
if(TemplateApproveType.CREATESELECT.getKey().equals(personType) ||
TemplateApproveType.SUPERSELECT.getKey().equals(personType)){
QueryWrapper approveDataQw = new QueryWrapper();
approveDataQw.eq("work_id",workId);
approveDataQw.eq("activity_id",activityId);
TemplateApproveDataDO templateApproveDataDO = workflowApproveDataMapper.selectOne(approveDataQw);
if(templateApproveDataDO != null && templateApproveDataDO.getPersonData() != null){
processEngine.getTaskService()//
.addCandidateUser(taskId, templateApproveDataDO.getPersonData());
reveiverUsers.add(templateApproveDataDO.getPersonData());
}
}
if(TemplateApproveType.CREATESELF.getKey().equals(personType)){
QueryWrapper qw = new QueryWrapper();
qw.eq("work_id",workId);
qw.eq("task_tp", TaskRecordType.CREATE.getKey());
List<TaskRecordsDO> TaskRecordsDO = workRecordsService.list(qw);
if(TaskRecordsDO != null && TaskRecordsDO.size() == 1){
processEngine.getTaskService()//
.addCandidateUser(taskId, TaskRecordsDO.get(0).getHandlePerson());
}
reveiverUsers.add(TaskRecordsDO.get(0).getHandlePerson());
}
if(TemplateApproveType.SAMEBEFOR.getKey().equals(personType)){
processEngine.getTaskService()//
.addCandidateUser(taskId, userId);
reveiverUsers.add(userId);
}
//标记所有当前用户为任务未读状态
List<TaskReadDO> taskReadDOList = new ArrayList<>();
for(String user : reveiverUsers){
TaskReadDO taskReadDO = TaskReadDO.builder().taskId(taskId).id(UUID.randomUUID().toString())
.userId(user).build();
taskReadDOList.add(taskReadDO);
}
taskReadService.saveBatch(taskReadDOList);
//给任务人发送消息
TaskDO taskDO = workBaseMapper.selectById(workId);
if(taskDO != null && "1".equals(taskDO.getIfSend())){
TaskInfoRDTO taskInfoRDTO = new TaskInfoRDTO();
taskInfoRDTO.setReveiverUsers(reveiverUsers);
taskInfoRDTO.setWorkId(workId);
taskInfoService.sendMessage(MessageType.NEWTASK.getKey(),taskInfoRDTO);
}
}
}
return true;
}catch(Exception e){
e.printStackTrace();
logger.error(e.getMessage());
}
return false;
}*/
/* @Transactional
@Override
public Boolean templateCopy(String templateId, String workTpId) {
String templateIdNew = RandomUtil.randomString(9);
//1.模板基础信息
QueryWrapper<TemplateDO> qw = new QueryWrapper<>();
qw.eq("id", templateId);
TemplateDO templateDO = workTemplateService.getOne(qw);
templateDO.setId(templateIdNew);
templateDO.setTemplateNm(templateDO.getTemplateNm() + StringUtil.getRandomString(5));
templateDO.setWorkTpId(workTpId);
templateDO.setIfEnable("0");
templateDO.setCreateTime(new Date());
//复制模板基础信息
workTemplateService.save(templateDO);
//2.查询表单
QueryWrapper qw1 = new QueryWrapper();
qw1.eq(TEMPLATE_ID, templateId);
qw1.orderByAsc("FIELD_ORDER");
List<TemplateFormFieldDO> templateFormFieldDOList = workTemplateFieldService.list(qw1);
for (TemplateFormFieldDO templateFormFieldDO : templateFormFieldDOList) {
templateFormFieldDO.setId(templateFormFieldDO.getId() + RandomUtil.randomString(3));
templateFormFieldDO.setTemplateId(templateIdNew);
}
workTemplateFieldService.saveBatch(templateFormFieldDOList);
//3.查询流程文件xml
Map<String, Object> activiti = new HashMap<>();
//查询xml文件路径
QueryWrapper qw3 = new QueryWrapper();
qw3.eq(TEMPLATE_ID, templateId);
TemplateProcessFileDO templateProcessFileDO = iProcessFileService.getOne(qw3);
if (templateProcessFileDO != null) {
//读取xml返回字符串
FileReader fileReader = new FileReader(templateProcessFileDO.getProcessFilePath());
String result = fileReader.readString();
//替换processId
result = result.replace("p" + templateId, "p" + templateIdNew);
this.uploadActitytiBpmn(result, templateIdNew);
}
//表单权限配置
QueryWrapper qw4 = new QueryWrapper<>();
qw4.eq(TEMPLATE_ID, templateId);
List<TemplatePermissionDO> templatePermissionDOList = workPermissionService.list(qw4);
for (TemplatePermissionDO templatePermissionDO : templatePermissionDOList) {
templatePermissionDO.setId(IdUtil.randomUUID());
templatePermissionDO.setTemplateId(templateIdNew);
}
workPermissionService.saveBatch(templatePermissionDOList);
// 流程判断
QueryWrapper processGatewayQueryWrapper = new QueryWrapper<>();
processGatewayQueryWrapper.eq(TEMPLATE_ID, templateId);
List<TemplateGatewayDO> templateGatewayDOList = processGatewayService.list(processGatewayQueryWrapper);
for(TemplateGatewayDO templateGatewayDO : templateGatewayDOList) {
templateGatewayDO.setId(IdUtil.randomUUID());
templateGatewayDO.setTemplateId(templateIdNew);
}
processGatewayService.saveBatch(templateGatewayDOList);
//审批人员配置
List<TemplateApproveDO> templateApproveDOList = workApproveService.getWorkApprove(templateId);
for (TemplateApproveDO templateApproveDO : templateApproveDOList) {
templateApproveDO.setTemplateId(templateIdNew);
templateApproveDO.setId(IdUtil.randomUUID());
}
workApproveService.saveBatch(templateApproveDOList);
//4.查询其他设置
QueryWrapper<TemplateOtherSettingsDO> qw5 = new QueryWrapper<>();
qw5.eq(TEMPLATE_ID, templateId);
TemplateOtherSettingsDO templateOtherSettingsDO = workTemplateOtherSettingsService.getOne(qw5);
if (templateOtherSettingsDO != null) {
templateOtherSettingsDO.setTemplateId(templateIdNew);
workTemplateOtherSettingsService.save(templateOtherSettingsDO);
}
return true;
}*/
@Override
@Transactional
public Boolean publishBytemplate(TemplateDO templateDO) {
try {
//通过原来template查询file地址
QueryWrapper<TemplateProcessFileDO> qw1 = new QueryWrapper<>();
qw1.eq("template_id", templateDO.getId());
List<TemplateProcessFileDO> templateProcessFileDOS = processFileMapper.selectList(qw1);
String processFilePath = templateProcessFileDOS.get(0).getProcessFilePath();
List<String> activitiIds = new ArrayList<>();
if (processFilePath != null) {
activitiIds = readBpmn.newProcessFile(processFilePath, templateDO.getId());
}
//删除activitiIds不存在的审批人和权限
workPermissionMapper.deleteByActivitiId(activitiIds,templateDO.getId());
workApproveMapper.deleteByActivitiId(activitiIds,templateDO.getId());
//根据模板id查询工单表数据
WorkflowTask workflowTask = workflowTaskService.selectBytemplate(templateDO);
if (workflowTask != null) {
//修改工单状态为发布
workflowTaskRepository.updateStatus(templateDO);
//重新生成workId
workflowTask.setWorkId(String.valueOf(UUID.randomUUID()));
//数据存入工单存贮表
workflowTaskHiRepository.insertWorkflowTaskHi(workflowTask);
}
//修改模板状态
workTemplateMapper.updateStatus(templateDO);
//根据模板id查出模板数据
QueryWrapper<TemplateDO> qw = new QueryWrapper<>();
qw.eq("id", templateDO.getId());
TemplateDO templateDO1 = workTemplateService.getOne(qw);
WorkflowTemplateHi workflowTemplateHi = new WorkflowTemplateHi();
//根据模板类型查询历史模板表最大版本
List<String> versionHiByTptem = workflowTemplateHiRepository.temVersionHiByTptem(templateDO1);
//判断是否存在
if (StringUtils.isNotEmpty(versionHiByTptem.get(0))) {
//存在版本加1
String version = String.valueOf(Integer.parseInt(versionHiByTptem.get(0)) + 1);
workflowTemplateHi.setVersion(version);
} else {
//不存在默认版本为1
String version = "1";
workflowTemplateHi.setVersion(version);
}
//重新生成模板
workflowTemplateHi.setId(String.valueOf(UUID.randomUUID()));
workflowTemplateHi.setCreateRoles(templateDO1.getCreateRoles());
workflowTemplateHi.setCreateTime(templateDO1.getCreateTime());
workflowTemplateHi.setIconImage(templateDO1.getIconImage());
workflowTemplateHi.setIfEnable(templateDO1.getIfEnable());
workflowTemplateHi.setManagerRoles(templateDO1.getManagerRoles());
workflowTemplateHi.setPhone(templateDO1.getPhone());
workflowTemplateHi.setTemplateExplain(templateDO1.getWorkTpId());
workflowTemplateHi.setTemplateNm(templateDO1.getTemplateNm());
workflowTemplateHi.setTypeTemplate(templateDO1.getTypeTemplate());
workflowTemplateHi.setUpdateTime(templateDO1.getUpdateTime());
workflowTemplateHi.setWorkTpId(templateDO1.getWorkTpId());
//保存到模板存贮表
workflowTemplateHiRepository.insertTemplateHi(workflowTemplateHi);
//根据当前模板id对应的Field
List<TemplateFormFieldDO> templateFormFieldDOS = workTemplateFieldService.selectWorkTempldateField(templateDO.getId());
List<TemplateFormFieldDO> templateFormFieldHiDOS = new ArrayList<>();
List<TemplatePermissionDO> templatePermissionDOHis = new ArrayList<>();
for (TemplateFormFieldDO templateFormFieldDO : templateFormFieldDOS) {
//根据原来的模板id和原fieldid和活动id找到当前的permission对象
List<TemplatePermissionDO> templatePermissionDOs = workPermissionMapper.workPermissionByTemplateFormFieldDO(templateFormFieldDO);
//重新生成Formfield的ID
templateFormFieldDO.setId(String.valueOf(UUID.randomUUID()));
//设置模板id为对应的模板存贮表id;
templateFormFieldDO.setTemplateId(workflowTemplateHi.getId());
for (TemplatePermissionDO templatePermissionDO : templatePermissionDOs) {
//重新生成权限表id
templatePermissionDO.setId(String.valueOf(UUID.randomUUID()));
//设置权限表表单id为表单存贮表当前id
templatePermissionDO.setFieldId(templateFormFieldDO.getId());
//设置模板id为对应的模板存贮表id;
templatePermissionDO.setTemplateId(workflowTemplateHi.getId());
//历史权限表数据存入list
templatePermissionDOHis.add(templatePermissionDO);
}
//历史表单数据存入list
templateFormFieldHiDOS.add(templateFormFieldDO);
}
//查询当前原模板id对应的GateWay
QueryWrapper wrapper1 = new QueryWrapper();
wrapper1.eq("template_id", templateDO.getId());
List<TemplateGatewayDO> templateGatewayDOs = processGatewayMapper.selectList(wrapper1);
List<TemplateGatewayDO> templateGatewayHis = new ArrayList<>();
for (TemplateGatewayDO templateGatewayDO : templateGatewayDOs) {
templateGatewayDO.setId(String.valueOf(UUID.randomUUID()));
templateGatewayDO.setTemplateId(workflowTemplateHi.getId());
templateGatewayHis.add(templateGatewayDO);
}
//保存到Gateway存贮表
if (templateGatewayHis.size() > 0) {
processGatewayHiMapper.insertGatewayHi(templateGatewayHis);
}
//保存到Permisstion存贮表
if (templatePermissionDOHis.size() > 0) {
workPermissionHiMapper.insertPermissionHi(templatePermissionDOHis);
}//保存到FormField存贮表
if (templateFormFieldHiDOS.size() > 0) {
workflowTemplateFormFieldHiRepository.insertFormFieldHi(templateFormFieldHiDOS);
}
//查询当前原模板id对应的approve
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("template_id", templateDO.getId());
List<TemplateApproveDO> TemplateApproveDOlist = workApproveMapper.selectList(wrapper);
List<TemplateApproveDO> TemplateApproveDOHis = new ArrayList<>();
for (TemplateApproveDO templateApproveDO : TemplateApproveDOlist) {
templateApproveDO.setId(String.valueOf(UUID.randomUUID()));
templateApproveDO.setTemplateId(workflowTemplateHi.getId());
TemplateApproveDOHis.add(templateApproveDO);
}
//保存当approve存储表
if (TemplateApproveDOHis.size() > 0) {
workApproveHiMapper.insertApproveHi(TemplateApproveDOHis);
}
//保存到网关历史表
return true;
} catch (Exception e) {
logger.error(e.getMessage());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return false;
}
;
//@Transactional
@Override
public Ret saveTemplateAll(WorkTemplateResDTO workTemplateResDTO) {
if (StrUtil.isEmpty(workTemplateResDTO.getTemplateId())) {
return Ret.error().setMsg("模板id不能为空");
}
String templateId = workTemplateResDTO.getTemplateId();
//任务基础设置-----------------------------------------------------------------------
//1保存基础信息
if (workTemplateResDTO.getWorkTemplate() != null) {
//判断模板id是否存在
TemplateDO templateDO = workTemplateService.getById(templateId);
workTemplateResDTO.getWorkTemplate().setId(templateId);
if (templateDO != null) {
workTemplateResDTO.getWorkTemplate().setUpdateTime(new Date());
workTemplateResDTO.getWorkTemplate().setStatus("0");
workTemplateService.updateById(workTemplateResDTO.getWorkTemplate());
} else {
workTemplateResDTO.getWorkTemplate().setIfEnable("0");
workTemplateResDTO.getWorkTemplate().setCreateTime(new Date());
workTemplateService.save(workTemplateResDTO.getWorkTemplate());
}
}
//任务基础设置-----------------------------------------------------------------------------
//2保存表单信息
if (StrUtil.isNotEmpty(workTemplateResDTO.getFieldJsonStr())) {
workTemplateFieldService.saveOrUpdateWorkTempldateField(templateId, workTemplateResDTO.getFieldJsonStr());
} else if (workTemplateResDTO.getFieldJsonStr() == "") {
workTemplateFieldService.deleteWorkTempldateField(templateId);
}
//3保存流程文件
if (StrUtil.isNotEmpty(workTemplateResDTO.getXmlJson())) {
this.uploadActitytiBpmn(workTemplateResDTO.getXmlJson(), templateId);
}
//任务其他设置----------------------------------------------------------------------
//审批人员配置
if (workTemplateResDTO.getWorkApproveList() != null && !workTemplateResDTO.getWorkApproveList().isEmpty()) {
workApproveService.saveWorkApproveBatch(workTemplateResDTO.getWorkApproveList());
}
//任务其他设置---------------------------------------------------------------------
//表单权限配置
if (StrUtil.isNotEmpty(workTemplateResDTO.getPermissionJson())) {
workPermissionService.saveWorkPermissionBatch(workTemplateResDTO.getPermissionJson());
}
//保存表达式
if (workTemplateResDTO.getProcessGatewayList() != null && !workTemplateResDTO.getProcessGatewayList().isEmpty()) {
//先进行删除
QueryWrapper qw = new QueryWrapper();
qw.eq("template_id", templateId);
processGatewayService.remove(qw);
for (TemplateGatewayDO templateGatewayDO : workTemplateResDTO.getProcessGatewayList()) {
templateGatewayDO.setId(IdUtil.randomUUID());
}
processGatewayService.saveBatch(workTemplateResDTO.getProcessGatewayList());
}
//任务其他设置??----------------------------------------------------------------
//4保存其他设置
/* if (workTemplateResDTO.getWorkTemplateOtherSettings() != null) {
QueryWrapper qw5 = new QueryWrapper();
qw5.eq(TEMPLATE_ID, templateId);
workTemplateOtherSettingsService.remove(qw5);
workTemplateOtherSettingsService.save(workTemplateResDTO.getWorkTemplateOtherSettings());
}*/
//任务其他设置??----------------------------------------------------------------
return Ret.ok().setMsg("保存成功");
}
/* @Override
public Boolean saveTemplateService(TemplateDO templateDO) {
String tempId = IdUtil.randomUUID();
templateDO.setId(tempId);
templateDO.setIfEnable("0");
return workTemplateService.save(templateDO);
}
@Override
public List<TemplateDO> getTemplateList(TemplateDO templateDO) {
QueryWrapper<TemplateDO> qw = new QueryWrapper<>();
if (StringUtils.isNotEmpty(templateDO.getId())) {
qw.eq("id", templateDO.getId());
}
if (StringUtils.isNotEmpty(templateDO.getIfEnable())) {
qw.eq("IF_ENABLE", templateDO.getIfEnable());
}
if (StringUtils.isNotEmpty(templateDO.getPhone())) {
qw.eq("PHONE", templateDO.getPhone());
}
if (StringUtils.isNotEmpty(templateDO.getTemplateNm())) {
qw.like("TEMPLATE_NM", templateDO.getTemplateNm());
}
if (StringUtils.isNotEmpty(templateDO.getWorkTpId())) {
qw.like("WORK_TP_ID", templateDO.getWorkTpId());
}
return workTemplateService.list(qw);
}
@Override
public IPage<TemplateDO> getTemplatePage(TemplateDO templateDO, Integer page, Integer size) {
QueryWrapper<TemplateDO> qw = new QueryWrapper<>();
if (StringUtils.isNotEmpty(templateDO.getId())) {
qw.eq("id", templateDO.getId());
}
if (StringUtils.isNotEmpty(templateDO.getIfEnable())) {
qw.eq("IF_ENABLE", templateDO.getIfEnable());
}
if (StringUtils.isNotEmpty(templateDO.getPhone())) {
qw.eq("PHONE", templateDO.getPhone());
}
if (StringUtils.isNotEmpty(templateDO.getTemplateNm())) {
qw.like("TEMPLATE_NM", templateDO.getTemplateNm());
}
if (StringUtils.isNotEmpty(templateDO.getWorkTpId())) {
qw.eq("WORK_TP_ID", templateDO.getWorkTpId());
}
return workTemplateService.page(new Page<>(page, size), qw);
}
*/
@Override
public WorkTemplateResDTO getTemplateByTemplateId(String templateId) {
WorkTemplateResDTO workTemplateResDTO = new WorkTemplateResDTO();
//1.模板基础信息
QueryWrapper<TemplateDO> qw = new QueryWrapper<>();
qw.eq("id", templateId);
TemplateDO templateDO = workTemplateService.getOne(qw);
workTemplateResDTO.setWorkTemplate(templateDO);
//2.查询表单
QueryWrapper qw1 = new QueryWrapper();
qw1.eq(TEMPLATE_ID, templateId);
qw1.orderByAsc("FIELD_ORDER");
List<TemplateFormFieldDO> templateFormFieldDOList = workTemplateFieldService.list(qw1);
workTemplateResDTO.setTemplateFormFieldList(templateFormFieldDOList);
//3.查询流程文件xml
ActivitiResDTO activiti = new ActivitiResDTO();
//查询xml文件路径
QueryWrapper qw2 = new QueryWrapper();
qw2.eq(TEMPLATE_ID, templateId);
List<TemplateProcessFileDO> processFile = iProcessFileService.list(qw2);
if (processFile != null && !processFile.isEmpty()) {
//读取xml返回字符串
FileReader fileReader = new FileReader(processPath + processFile.get(0).getProcessFilePath());
String result = fileReader.readString();
activiti.setXmlPath(result);
}
List<WorkPermissionInfoResDTO> workPermission = workPermissionService.getWorkPermissionByTemplateId(templateId);
activiti.setWorkPermission(workPermission);
List<TemplateApproveDO> templateApproveDOList = workApproveService.getWorkApprove(templateId);
activiti.setWorkApproveList(templateApproveDOList);
QueryWrapper qw6 = new QueryWrapper();
qw6.eq(TEMPLATE_ID, templateId);
List<TemplateGatewayDO> processGatewayList = processGatewayService.list(qw6);
Map<String, TemplateFormFieldDO> templateFormFieldDOMap = new HashMap<>(templateFormFieldDOList.size());
for (TemplateFormFieldDO templateFormFieldDO : templateFormFieldDOList) {
templateFormFieldDOMap.put(templateFormFieldDO.getId(), templateFormFieldDO);
}
for (TemplateGatewayDO templateGatewayDO : processGatewayList) {
templateGatewayDO.setTemplateFormFieldDO(templateFormFieldDOMap.get(templateGatewayDO.getFieldId()));
}
activiti.setProcessGatewayList(processGatewayList);
workTemplateResDTO.setActivitiml(activiti);
/* //4.查询其他设置
QueryWrapper<TemplateOtherSettingsDO> qw3 = new QueryWrapper<>();
qw3.eq(TEMPLATE_ID, templateId);
TemplateOtherSettingsDO templateOtherSettingsDO = workTemplateOtherSettingsService.getOne(qw3);
workTemplateResDTO.setWorkTemplateOtherSettings(templateOtherSettingsDO);*/
return workTemplateResDTO;
}
/*
@Override
public Boolean updateTemplateMove(String templateId, String workTpId) {
TemplateDO templateDO = new TemplateDO();
templateDO.setId(templateId);
templateDO.setWorkTpId(workTpId);
return workTemplateService.updateById(templateDO);
}*/
/* @Override
public boolean completTeask(TaskInfoRDTO taskInfoRDTO) {
try{
taskInfoService.completeTaskBefor(taskInfoRDTO);
String taskId = taskInfoRDTO.getTaskId();
String isAgree = taskInfoRDTO.getIsAgree();
String workId = taskInfoRDTO.getWorkId();
TaskEntity task = (TaskEntity) taskService.createTaskQuery().taskId(taskId).singleResult();
//完成任务
this.taskService.addComment(taskId, task.getProcessInstanceId(), isAgree);
//设置流程变量
Map<String, Object> variables = new HashMap<>();
//查询表单所有变量
QueryWrapper qw = new QueryWrapper();
qw.eq("WORK_ID", workId);
List<TaskDataDO> taskDataList = taskDataService.list(qw);
for (TaskDataDO taskData : taskDataList) {
variables.put(taskData.getFieldId(), taskData.getFieldValue());
}
if (StrUtil.isNotEmpty(isAgree)) {
variables.put("flag", isAgree);
}
this.processEngine.getTaskService().complete(taskId, variables);
//创建查询对象
List<Task> task2List = taskService.createTaskQuery()
.processInstanceId(task.getProcessInstanceId()).list();
//任务完成回调
taskInfoService.completeTaskCallback(task2List,workId,taskInfoRDTO);
return true;
}catch(Exception e){
logger.error(e.getMessage());
e.printStackTrace();
}
return false;
}
@Override
public boolean completTaskBatch(List<TaskInfoRDTO> taskInfoRDTOList) {
if(taskInfoRDTOList != null){
for(TaskInfoRDTO taskInfoRDTO : taskInfoRDTOList){
completTeask(taskInfoRDTO);
}
}
return true;
}*/
/* @Override
public boolean recall(String processId, String activityId) {
//不能撤回的情况1.判断是否是自己提交的2.判断流程是否已结束3.下一级是否已审批
//查询当前节点
Task task = taskService.createTaskQuery()
.processInstanceId(processId)
.singleResult();
if (task == null) {
return false;
}
Map<String, Object> vars = new HashMap<>();
// 目标节点
ActivityImpl destinationActivity = queryTargetActivity(activityId, task.getProcessDefinitionId());
// 当前节点实例id
String executionId = task.getExecutionId();
// 当前节点
ActivityImpl currentActivity = queryTargetActivity(task.getTaskDefinitionKey(), task.getProcessDefinitionId());
CommandExecutor commandExecutor = taskServiceImpl
.getCommandExecutor();
commandExecutor.execute(new JDJumpTaskCmd(executionId, destinationActivity, vars, currentActivity));
return true;
}*/
/*@Transactional
@Override
public boolean removeTemplate(String id) {
//1.删除模板表
if(baseMapper.deleteById(id) !=1){
return false;
}
QueryWrapper qw1 = new QueryWrapper();
qw1.eq(TEMPLATE_ID, id);
if(!workTemplateFieldService.remove(qw1)){
return false;
}
if(!iProcessFileService.remove(qw1)){
return false;
}
if(!workPermissionService.remove(qw1)){
return false;
}
if(!workApproveService.remove(qw1)){
return false;
}
if(!processGatewayService.remove(qw1)){
return false;
}
if(!workTemplateOtherSettingsService.remove(qw1)){
return false;
}
return true;
}*/
/**
* 根据ActivityId 查询出来想要活动Activity
*
* @param id
* @return
*/
private ActivityImpl queryTargetActivity(String id, String processDefinitionId) {
ReadOnlyProcessDefinition deployedProcessDefinition = ((RepositoryServiceImpl) processEngine.getRepositoryService())
.getDeployedProcessDefinition(processDefinitionId);
List<ActivityImpl> activities = (List<ActivityImpl>) deployedProcessDefinition.getActivities();
for (ActivityImpl activityImpl : activities) {
if (activityImpl.getId().equals(id)) {
return activityImpl;
}
}
return null;
}
/**
* 上传工作流文件base64
*
* @param xmlJson
* @param tempId
* @return
*/
private Boolean uploadActitytiBpmn(String xmlJson, String tempId) {
String xml = StringEscapeUtils.unescapeJava(xmlJson);
xml = xml.replace("bpmn2:", "");
xml = xml.replace(":bpmn2", "");
String path = processPath;
String fileName = processFileMapper.fileNameBytemplateId(tempId);
if (fileName == null || "".equals(fileName)) {
fileName = IdUtil.randomUUID() + ".bpmn";
}
FileWriter writer = new FileWriter(fileName);
writer.write(xml);
File file = writer.getFile();
if (!FileUtil.isEmpty(file)) {
try {
File filepath = new File(path);
if (!filepath.exists()) {
filepath.mkdirs();
}
// 文件保存路径
String savePath = path + fileName;
// 转存文件
FileUtil.copy(file, new File(savePath), true);
return iProcessFileService.uploadProcessFileByFileName(fileName, tempId, processPath);
} catch (Exception e) {
logger.error("文件保存错误");
}
}
return false;
}
/**
* 根据流程文件获取流程文件的唯一ID
*
* @param processFile
* @return
*/
private String queryBPMNkeyByFile(File processFile) {
XMLInputFactory xif = XMLInputFactory.newInstance();
//InputStreamReader in;
XMLStreamReader xtr;
String activitiNodeId = "";
try (InputStreamReader in = new InputStreamReader(new FileInputStream(processFile))) {
xtr = xif.createXMLStreamReader(in);
BpmnModel model = new BpmnXMLConverter().convertToBpmnModel(xtr);
if (model != null) {
List<FlowElement> flowElements = (List) model.getMainProcess().getFlowElements();
activitiNodeId = flowElements.get(0).getId();
}
} catch (Exception e) {
logger.error("文件读取错误");
}
return activitiNodeId;
}
}
package com.zgiot.zx.workflow.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zgiot.zx.workflow.dto.TemplateTypeResDTO;
import com.zgiot.zx.workflow.dto.WorkTemplateResDTO;
import com.zgiot.zx.workflow.entity.TemplateDO;
import com.zgiot.zx.workflow.entity.TemplateTypeDO;
import com.zgiot.zx.workflow.entity.WorkflowTask;
import com.zgiot.zx.workflow.entity.WorkflowTaskHi;
import com.zgiot.zx.workflow.mapper.TbRoleMapper;
import com.zgiot.zx.workflow.mapper.WorkTypeMapper;
import com.zgiot.zx.workflow.mapper.WorkflowTaskHiRepository;
import com.zgiot.zx.workflow.mapper.WorkflowTaskRepository;
import com.zgiot.zx.workflow.service.WorkflowTaskHiService;
import com.zgiot.zx.workflow.service.WorkflowTaskService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: jiangpengpeng
* @Description:
* @Date: Created in 15:50 2019/7/29
* @Modified By:
*/
@Service
public class WorkflowTaskHiServiceImpl extends ServiceImpl<WorkflowTaskHiRepository, WorkflowTaskHi> implements WorkflowTaskHiService {
private Logger logger = LoggerFactory.getLogger(WorkflowTaskHiServiceImpl.class);
}
package com.zgiot.zx.workflow.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zgiot.zx.workflow.dto.TemplateTypeResDTO;
import com.zgiot.zx.workflow.dto.WorkTemplateResDTO;
import com.zgiot.zx.workflow.entity.*;
import com.zgiot.zx.workflow.mapper.*;
import com.zgiot.zx.workflow.service.IWorkTemplateFieldService;
import com.zgiot.zx.workflow.service.IWorkTemplateService;
import com.zgiot.zx.workflow.service.WorkflowTaskService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @Author: jiangpengpeng
* @Description:
* @Date: Created in 15:50 2019/7/29
* @Modified By:
*/
@Service
public class WorkflowTaskServiceImpl extends ServiceImpl<WorkflowTaskRepository, WorkflowTask> implements WorkflowTaskService {
private Logger logger = LoggerFactory.getLogger(WorkflowTaskServiceImpl.class);
@Autowired
private WorkTypeMapper workTypeMapper;
@Autowired
private TbRoleMapper tbRoleMapper;
public List<TemplateTypeResDTO> getAllWorkflowTask() {
List<TemplateTypeResDTO> result = new ArrayList<>();
List<TemplateTypeDO> templateTypeDOList = workTypeMapper.selectList(null);
for (TemplateTypeDO templateTypeDO : templateTypeDOList) {
QueryWrapper qw = new QueryWrapper();
qw.eq("work_tp_id", templateTypeDO.getId());
qw.orderByDesc("create_time");
List<WorkflowTask> workflowTaskList = baseMapper.selectList(qw);
TemplateTypeResDTO templateTypeResDTO = new TemplateTypeResDTO();
templateTypeResDTO.setWorkflowTaskList(workflowTaskList);
templateTypeResDTO.setId(templateTypeDO.getId());
templateTypeResDTO.setName(templateTypeDO.getName());
templateTypeResDTO.setIfEnable(templateTypeDO.getIfEnable());
result.add(templateTypeResDTO);
}
return result;
}
;
//修改工单状态
@Override
public WorkflowTask updateWorkflowTask(WorkTemplateResDTO workTemplateResDTO) {
return null;
}
@Override
public WorkflowTask selectBytemplate(TemplateDO templateDO) {
QueryWrapper qw = new QueryWrapper();
qw.eq("template_id", templateDO.getId());
WorkflowTask workflowTask = baseMapper.selectOne(qw);
return workflowTask;
}
}
package com.zgiot.zx.workflow.utils;
import com.zgiot.zx.workflow.service.impl.ProcessFileServiceImpl;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
/**
* bpmn文件 增加修改节点工具类
*
* @author David
*/
public class BpmnXmlUtils {
static Logger logger = LoggerFactory.getLogger(ProcessFileServiceImpl.class);
private BpmnXmlUtils() {
}
/**
* 获取流程文件的ProcessId
* @param file
* @return
*/
public static String getProcessId(File file) {
SAXReader reader = new SAXReader();
try {
Document doc = reader.read(file);
Element rootElement = doc.getRootElement();
Element processElement = rootElement.elements().get(0);
return processElement.attribute("id").getValue();
} catch (DocumentException e) {
logger.error("XML文件读取或操作异常, {}", e.getMessage());
return "";
}
}
/**
* 排他网关增加表达式
*
* @param path xml文件路径
* @param sequenceFlowId xml 中 sequenceFlow 的 id
* @param expression 表达式
* @return 成功失败
*/
public static boolean addConditionExpression(String path, String sequenceFlowId, String expression) {
File file = new File(path);
SAXReader reader = new SAXReader();
try {
Document doc = reader.read(file);
Element rootElement = doc.getRootElement();
Element processElement = rootElement.elements().get(0);
List<Element> processChildrenElements = processElement.elements();
Element node = null;
for (Element element : processChildrenElements) {
if ("sequenceFlow".equals(element.getQName().getName()) && element.attribute("id").getValue().equals(sequenceFlowId)) {
node = element;
}
}
if (node != null) {
List<Element> nodes = node.elements();
if (nodes != null && !nodes.isEmpty()) {
for (Element element : nodes) {
node.remove(element);
}
}
// 添加conditionExpression节点
Element sequenceFlowNode = node.addElement("conditionExpression");
// 设置xsi:type 固定值
sequenceFlowNode.addAttribute("xsi:type", "tFormalExpression");
// 设置表达式
//表达式拼接
String expressionNew = "${" + expression + "}";
sequenceFlowNode.addCDATA(expressionNew);
//格式化为缩进格式
OutputFormat format = OutputFormat.createPrettyPrint();
//设置编码格式
format.setEncoding("UTF-8");
XMLWriter writer = new XMLWriter(new FileWriter(file), format);
//写入数据
writer.write(doc);
writer.close();
return true;
} else {
return false;
}
} catch (DocumentException | IOException e) {
logger.error("XML文件读取或操作异常, {}", e.getMessage());
return false;
}
}
}
package com.zgiot.zx.workflow.utils;
import java.io.UnsupportedEncodingException;
/**
* @ClassName ChineseCharToEn
* @Descroption TODO
* @Author 王夏晖
* @Date 2019/6/17 0017 20:44
**/
public final class ChineseCharToEn {
private final static int[] li_SecPosValue = { 1601, 1637, 1833, 2078, 2274,
2302, 2433, 2594, 2787, 3106, 3212, 3472, 3635, 3722, 3730, 3858,
4027, 4086, 4390, 4558, 4684, 4925, 5249, 5590 };
private final static String[] lc_FirstLetter = { "a", "b", "c", "d", "e",
"f", "g", "h", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",
"t", "w", "x", "y", "z" };
/**
* 取得给定汉字串的首字母串,即声母串
* @param str 给定汉字串
* @return 声母串
*/
public String getAllFirstLetter(String str) {
if (str == null || str.trim().length() == 0) {
return "";
}
String _str = "";
for (int i = 0; i < str.length(); i++) {
_str = _str + this.getFirstLetter(str.substring(i, i + 1));
}
return _str;
}
/**
* 取得给定汉字的首字母,即声母
* @param chinese 给定的汉字
* @return 给定汉字的声母
*/
public String getFirstLetter(String chinese) {
if (chinese == null || chinese.trim().length() == 0) {
return "";
}
chinese = this.conversionStr(chinese, "GB2312", "ISO8859-1");
if (chinese.length() > 1) // 判断是不是汉字
{
int li_SectorCode = (int) chinese.charAt(0); // 汉字区码
int li_PositionCode = (int) chinese.charAt(1); // 汉字位码
li_SectorCode = li_SectorCode - 160;
li_PositionCode = li_PositionCode - 160;
int li_SecPosCode = li_SectorCode * 100 + li_PositionCode; // 汉字区位码
if (li_SecPosCode > 1600 && li_SecPosCode < 5590) {
for (int i = 0; i < 23; i++) {
if (li_SecPosCode >= li_SecPosValue[i]
&& li_SecPosCode < li_SecPosValue[i + 1]) {
chinese = lc_FirstLetter[i];
break;
}
}
} else // 非汉字字符,如图形符号或ASCII码
{
chinese = this.conversionStr(chinese, "ISO8859-1", "GB2312");
chinese = chinese.substring(0, 1);
}
}
return chinese;
}
/**
* 字符串编码转换
* @param str 要转换编码的字符串
* @param charsetName 原来的编码
* @param toCharsetName 转换后的编码
* @return 经过编码转换后的字符串
*/
private String conversionStr(String str, String charsetName,String toCharsetName) {
try {
str = new String(str.getBytes(charsetName), toCharsetName);
} catch (UnsupportedEncodingException ex) {
System.out.println("字符串编码转换异常:" + ex.getMessage());
}
return str;
}
}
package com.zgiot.zx.workflow.utils;
import org.apache.commons.lang3.StringUtils;
/**
* @ClassName DateUtil
* @Descroption TODO
* @Author 王夏晖
* @Date 2019/6/13 0013 14:50
**/
public class DateUtil {
/**
* 根据分钟数计算格式化的时间差
* @return
*/
public static String getDuration(String minuteStr) {
if(StringUtils.isBlank(minuteStr)){
return "";
}
int minute = Integer.parseInt(minuteStr);
String result = "";
int days = minute / 60 / 24;
int daysRound = (int)Math.floor(days);
int hours = minute / 60 - (24 * daysRound);
int hoursRound = (int)Math.floor(hours);
int minutes = minute - (24 * 60 * daysRound) - (60 * hoursRound);
int minutesRound = (int)Math.floor(minutes);
if(daysRound != 0){
result += daysRound + "天";
}
if(hoursRound != 0){
result += hoursRound + "时";
}
if(minutesRound != 0){
result += minutesRound + "分";
}
return result;
}
}
package com.zgiot.zx.workflow.utils;
import org.activiti.bpmn.model.ExclusiveGateway;
import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.ExecutionListener;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.Arrays;
import java.util.List;
/**
* @Author: jiangpengpeng
* @Description:
* @Date: Created in 10:04 2019/10/17
* @Modified By:
*/
@Component
public class GatewayUtil implements ExecutionListener{
public Boolean containRole(DelegateExecution execution,String... rid){
boolean flag = false;
if (rid.length > 0 ) {
//1,2,
String[] roles = execution.getVariable("rid").toString().split(",");
List<String> role = Arrays.asList(roles) ;
if(role.size() == 0)
return false;
for(int i = 0 ; i < rid.length ; i++) {
if (role.contains(rid[i])) {
flag = true;
break;
}
}
}
return flag;
}
public Boolean notContainRole(DelegateExecution execution,String... rid){
return !this.containRole(execution, rid);
}
@Override
public void notify(DelegateExecution delegateExecution) throws Exception {
}
}
package com.zgiot.zx.workflow.utils;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
/**
* @author David
*/
public class ImageWatermarkUtils {
/**
* 给图片添加水印文字、可设置水印文字的旋转角度
* @param logoText 要写入的文字
* @param srcImgPath 源图片路径
* @param newImagePath 新图片路径
* @param degree 旋转角度
* @param color 字体颜色
* @param formaName 图片后缀
*/
public static void markImageByText(String logoText, String srcImgPath,String newImagePath,Integer degree, Color color,String formaName) {
InputStream is = null;
OutputStream os = null;
try {
// 1、源图片
Image srcImg = ImageIO.read(new File(srcImgPath));
BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null),srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB);
// 2、得到画笔对象
Graphics2D g = buffImg.createGraphics();
// 3、设置对线段的锯齿状边缘处理
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(srcImg.getScaledInstance(srcImg.getWidth(null), srcImg.getHeight(null), Image.SCALE_SMOOTH), 0, 0, null);
// 4、设置水印旋转
if (null != degree) {
g.rotate(Math.toRadians(degree), buffImg.getWidth()/2,buffImg.getHeight() /2);
}
// 5、设置水印文字颜色
g.setColor(color);
// 6、设置水印文字Font
g.setFont(new Font("宋体", Font.BOLD, buffImg.getHeight() /2));
// 7、设置水印文字透明度
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.15f));
// 8、第一参数->设置的内容,后面两个参数->文字在图片上的坐标位置(x,y)
g.drawString(logoText, buffImg.getWidth()/2 , buffImg.getHeight()/2);
// 9、释放资源
g.dispose();
// 10、生成图片
os = new FileOutputStream(newImagePath);
ImageIO.write(buffImg, formaName, os);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != is) {
is.close();
}
} catch (Exception e) {
e.printStackTrace();
}
try {
if (null != os) {
os.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
package com.zgiot.zx.workflow.utils;
import org.activiti.engine.impl.context.Context;
import org.activiti.engine.impl.interceptor.Command;
import org.activiti.engine.impl.interceptor.CommandContext;
import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
import org.activiti.engine.impl.persistence.entity.ExecutionEntityManager;
import org.activiti.engine.impl.persistence.entity.TaskEntity;
import org.activiti.engine.impl.pvm.process.ActivityImpl;
import java.util.Iterator;
import java.util.Map;
/**
* JD节点的跳转
*/
public class JDJumpTaskCmd implements Command<Void> {
protected String executionId;
protected ActivityImpl desActivity;
protected Map<String, Object> paramvar;
protected ActivityImpl currentActivity;
public Void execute(CommandContext commandContext) {
ExecutionEntityManager executionEntityManager = Context
.getCommandContext().getExecutionEntityManager();
// 获取当前流程的executionId,因为在并发的情况下executionId是唯一的。
ExecutionEntity executionEntity = executionEntityManager
.findExecutionById(executionId);
executionEntity.setVariables(paramvar);
executionEntity.setEventSource(this.currentActivity);
executionEntity.setActivity(this.currentActivity);
// 根据executionId 获取Task
Iterator<TaskEntity> localIterator = Context.getCommandContext()
.getTaskEntityManager()
.findTasksByExecutionId(this.executionId).iterator();
while (localIterator.hasNext()) {
TaskEntity taskEntity = localIterator.next();
// 触发任务监听
taskEntity.fireEvent("complete");
// 删除任务的原因
Context.getCommandContext().getTaskEntityManager()
.deleteTask(taskEntity, "completed", false);
}
executionEntity.executeActivity(this.desActivity);
return null;
}
/**
* 构造参数 可以根据自己的业务需要添加更多的字段
*
* @param executionId
* @param desActivity
* @param paramvar
* @param currentActivity
*/
public JDJumpTaskCmd(String executionId, ActivityImpl desActivity,
Map<String, Object> paramvar, ActivityImpl currentActivity) {
this.executionId = executionId;
this.desActivity = desActivity;
this.paramvar = paramvar;
this.currentActivity = currentActivity;
}
}
package com.zgiot.zx.workflow.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.zgiot.zx.workflow.base.Ret;
import com.zgiot.zx.workflow.dto.*;
import com.zgiot.zx.workflow.entity.SDept;
import com.zgiot.zx.workflow.entity.SRole;
import com.zgiot.zx.workflow.entity.SUser;
import com.zgiot.zx.workflow.mapper.SDeptMapper;
import com.zgiot.zx.workflow.mapper.SRoleMapper;
import com.zgiot.zx.workflow.mapper.SUserMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author David
*/
@Slf4j
@Component
public class MTCotactApiRequestClient {
private static final Logger logger = LoggerFactory.getLogger(MTCotactApiRequestClient.class);
public static String ACCESS_TOKEN = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJjcmVkZW50aWFsc05vbkV4cGlyZWQiOnRydWUsImFjY291bnROb25FeHBpcmVkIjp0cnVlLCJleHAiOjE1NjA5MDEwNTQ0MDMsImF1dGhvcml0aWVzIjpbeyJhdXRob3JpdHkiOiJST0xFX0FDQ09VTlRfUk9MRSJ9XSwiZW5hYmxlZCI6dHJ1ZSwiYWNjb3VudE5vbkxvY2tlZCI6dHJ1ZSwidXNlcm5hbWUiOiIxMTM5NDQyNDc3MjA5ODIxMTg2In0.SC3A6A-GE9eylYMutr6lwHwdo7knwDZaIrsV8pSjZhE3Er2irVpH5G0MzeWezG_9Y1u-KsYaz2CNn_MNo7QMpUsQNqtf8efUbuviTcuqWwCa4jHL9T2rLUwnvkyQjRqtR5zup7HjROzh_tImHbOku3OHqGX-NHSKFMvdpZwPJ8c";
@Autowired
private SRoleMapper sRoleMapper;
@Autowired
private SDeptMapper sDeptMapper;
@Autowired
private SUserMapper sUserMapper;
@Autowired
private OkHttpUtil okHttpUtil;
@Value("${mt.api}")
private String api;
/* *//**
* 根据accessToken获取当前用户信息
*
* @param accessToken
* @return
*//*
public MTMyInfoRspDTO accountGetMyInfo(String accessToken) {
login();
Map<String, String> headerParams = new HashMap<>(2);
headerParams.put("clientType", "app");
headerParams.put("Authorization", "Bearer " + ACCESS_TOKEN);
String json = okHttpUtil.get(api + "contact/v1/account/get_my_info", null, headerParams);
if(StringUtils.isNotEmpty(json)) {
return JSON.parseObject(json, new TypeReference<Ret<MTMyInfoRspDTO>>() {}).getData();
}
return null;
}*/
/**
* 角色组&角色列表查询
*
* @param corpId
* @param accessToken
* @return
*/
public List<MTRoleGroupInfoRspDTO> roleListRoleGroup(String corpId, String accessToken) {
List<MTRoleGroupInfoRspDTO> MTRoleGroupInfoRspDTOs = new ArrayList<>();
MTRoleGroupInfoRspDTO mtRoleGroupInfoRspDTO = new MTRoleGroupInfoRspDTO();
List<SRole> sRoles = sRoleMapper.querySRoles();
MTRoleGroupInfoRspDTO.RolesBean rolesBean=null;
List< MTRoleGroupInfoRspDTO.RolesBean> list = new ArrayList<>();
for (SRole sRole: sRoles) {
rolesBean = new MTRoleGroupInfoRspDTO.RolesBean();
rolesBean.setId(sRole.getBusinessId());
rolesBean.setName(sRole.getRoleName());
list.add(rolesBean);
}
mtRoleGroupInfoRspDTO.setId("11");
mtRoleGroupInfoRspDTO.setName("role组名");
mtRoleGroupInfoRspDTO.setCorpId("11");
mtRoleGroupInfoRspDTO.setSRole(list);
MTRoleGroupInfoRspDTOs.add(mtRoleGroupInfoRspDTO);
return MTRoleGroupInfoRspDTOs;
}
;
/*
*//**
* 根据公司id和用户ids 获取用户信息
*
* @param MTUserGetsReqDTO
* @param accessToken
* @return
*//*
public List<MTUserInfoRspDTO> userGets(MTUserGetsReqDTO MTUserGetsReqDTO, String accessToken) {
login();
Map<String, String> headerParams = new HashMap<>(2);
headerParams.put("clientType", "app");
headerParams.put("Authorization", "Bearer " + ACCESS_TOKEN);
String json = okHttpUtil.postForJson(api + "contact/v1/user/gets", JSON.toJSONString(MTUserGetsReqDTO), headerParams);
if(StringUtils.isNotEmpty(json)) {
return JSON.parseObject(json, new TypeReference<Ret<List<MTUserInfoRspDTO>>>() {
}).getData();
}
return new ArrayList<>();
}*/
/* *//**
* 根据公司id和角色id 获取该角色下的所有人员
*
* @param corpId
* @param roleId
* @param accessToken
* @return
*//*
public List<MTRoleUserInfoRspDTO> userGetRoleInfoList(String corpId, String roleId, String accessToken) {
login();
Map<String, String> queries = new HashMap<>(1);
queries.put("corpId", "6");
queries.put("roleId", "1128488322302513154");
Map<String, String> headerParams = new HashMap<>(2);
headerParams.put("clientType", "app");
headerParams.put("Authorization", "Bearer " + ACCESS_TOKEN);
String json = okHttpUtil.get(api + "contact/v1/user/getRoleInfoList", queries, headerParams);
if(StringUtils.isNotEmpty(json)) {
return JSON.parseObject(json, new TypeReference<Ret<List<MTRoleUserInfoRspDTO>>>() {
}).getData();
}
return new ArrayList<>();
}*/
/**
* 根据公司获取公司下的所有部门(tree)
*
* @param corpId
* @param accessToken
* @return
*/
public MTDeptTreeUserInfoRspDTO deptGetTreeByCorpId(String corpId, String accessToken) {
MTDeptTreeUserInfoRspDTO mtDeptTreeUserInfoRspDTO = new MTDeptTreeUserInfoRspDTO();
/* List<SDept> sDepts = sDeptMapper.querySDepts();
if (sDepts.size()<1)
return mtDeptTreeUserInfoRspDTO;*/
SDept sDept = new SDept();
sDept.setBusinessId("0");
/*mtDeptTreeUserInfoRspDTO.setDeptId(sDept.getBusinessId());
mtDeptTreeUserInfoRspDTO.setDeptName(sDept.getName());*/
/* mtDeptTreeUserInfoRspDTO.setsDept(sDept);
List<SUser> sUsers = sUserMapper.querySUsers(sDept);
MTDeptTreeUserInfoRspDTO.UserInfo userinfo = null;
List<MTDeptTreeUserInfoRspDTO.UserInfo> list = new ArrayList<>();
if (sUsers.size()>0) {
for (SUser sUser : sUsers) {
userinfo = new MTDeptTreeUserInfoRspDTO().new UserInfo();
userinfo.setId(sUser.getBusinessId());
userinfo.setName(sUser.getName());
list.add(userinfo);
}
}
mtDeptTreeUserInfoRspDTO.setUserInfoList(list);*/
mtDeptTreeUserInfoRspDTO.setsDept(sDept);
//children
childGetTree(mtDeptTreeUserInfoRspDTO);
return mtDeptTreeUserInfoRspDTO;
}
public void childGetTree(MTDeptTreeUserInfoRspDTO mtDeptTreeUserInfoRspDTO) {
List<SDept> childdept = sDeptMapper.childdept(mtDeptTreeUserInfoRspDTO.getsDept());
if (CollectionUtils.isEmpty(childdept)) {
return;
}
for (SDept se : childdept) {
MTDeptTreeUserInfoRspDTO mt = new MTDeptTreeUserInfoRspDTO();
List<SUser> sUsers = sUserMapper.querySUsers(se);
mt.setDeptId(se.getBusinessId());
mt.setDeptName(se.getName());
mt.setsDept(se);
// mt.setsUsers(sUsers);
MTDeptTreeUserInfoRspDTO.UserInfo userinfo = null;
List<MTDeptTreeUserInfoRspDTO.UserInfo> listUserInfo = new ArrayList<>();
for (SUser sUser: sUsers) {
userinfo = new MTDeptTreeUserInfoRspDTO().new UserInfo();
userinfo.setId(sUser.getBusinessId());
userinfo.setName(sUser.getName());
listUserInfo.add(userinfo);
}
mt.setUserInfoList(listUserInfo);
if (CollectionUtils.isEmpty(mtDeptTreeUserInfoRspDTO.getChildDeptTreeResDTOS())) {
List<MTDeptTreeUserInfoRspDTO> list = new ArrayList<>();
list.add(mt);
mtDeptTreeUserInfoRspDTO.setChildDeptTreeResDTOS(list);
} else {
mtDeptTreeUserInfoRspDTO.getChildDeptTreeResDTOS().add(mt);
}
this.childGetTree(mt);
}
}
/* *//**
* 根据公司id和部门ids获取用户列表
* @param corpId
* @param deptIds
* @param accessToken
* @return
*//*
public List<MTGetUserByDeptIdsRspDTO> userGetUserByDeptIds(String corpId, List<String> deptIds, String accessToken) {
login();
MTGetUserByDeptIdsReqDTO mtGetUserByDeptIdsReqDTO = new MTGetUserByDeptIdsReqDTO();
mtGetUserByDeptIdsReqDTO.setCorpId(corpId);
mtGetUserByDeptIdsReqDTO.setDeptIds(deptIds);
Map<String, String> headerParams = new HashMap<>(2);
headerParams.put("clientType", "app");
headerParams.put("Authorization", "Bearer " + ACCESS_TOKEN);
String json = okHttpUtil.postForJson(api + "contact/v1/user/get_user_by_deptids", JSON.toJSONString(mtGetUserByDeptIdsReqDTO), headerParams);
if(StringUtils.isNotEmpty(json)) {
return JSON.parseObject(json, new TypeReference<Ret<List<MTGetUserByDeptIdsRspDTO>>>() {
}).getData();
}
return new ArrayList<>();
}*/
/* *//**
* 获取某个部门的下级部门和人员
* @param corpId
* @param pid
* @param accessToken
* @return
*//*
public MTDeptSubDeptUserPagelistRspDTO deptSubDeptUserPagelist(String corpId, String pid, String accessToken) {
login();
Map<String, String> queries = new HashMap<>(4);
queries.put("corpId", corpId);
queries.put("pid", pid);
queries.put("pageNum", "1");
queries.put("pageSize", "1000");
Map<String, String> headerParams = new HashMap<>(2);
headerParams.put("clientType", "app");
headerParams.put("Authorization", "Bearer " + ACCESS_TOKEN);
String json = okHttpUtil.get(api + "contact/v1/dept/pagelist", queries, headerParams);
if(StringUtils.isNotEmpty(json)) {
return JSON.parseObject(json, new TypeReference<Ret<MTDeptSubDeptUserPagelistRspDTO>>() {
}).getData();
}
return null;
}*/
/**
* 获取token接口
*/
public void login() {
Map<String, String> queries = new HashMap<>(1);
queries.put("username", "15488888569");
queries.put("password", "111222");
Map<String, String> headerParams = new HashMap<>(2);
headerParams.put("clientType", "app");
String json = okHttpUtil.get(api + "app/login", queries, headerParams);
if (StringUtils.isNotEmpty(json)) {
Ret<Map<String, Object>> ret = JSON.parseObject(json, new TypeReference<Ret<Map<String, Object>>>() {
});
if (ret.getData() != null) {
ACCESS_TOKEN = ret.getData().get("access_token").toString();
} else {
logger.error("token获取异常");
}
}
}
}
package com.zgiot.zx.workflow.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.zgiot.zx.workflow.base.Ret;
import com.zgiot.zx.workflow.dto.MTEquipmentInfoRspDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 设备接口
* @author David
*/
@Component
public class MTEquipmentApiRequestClient {
private static final Logger logger = LoggerFactory.getLogger(MTEquipmentApiRequestClient.class);
@Autowired
private OkHttpUtil okHttpUtil;
@Value("${mt.api}")
private String api;
/**
* 模糊搜索列表
* @param equipmentCodeOrName
* @param dimCode
* @param corpId
* @param accessToken
* @return
*/
public List<MTEquipmentInfoRspDTO> getEquipment(String equipmentCodeOrName, String dimCode, String corpId, String accessToken) {
Map<String, String> queries = new HashMap<>(2);
queries.put("dimCode", dimCode);
Map<String, String> headerParams = new HashMap<>(3);
headerParams.put("corpId", corpId);
headerParams.put("clientType", "app");
headerParams.put("Authorization", "Bearer " + accessToken);
// String json = okHttpUtil.get(api + "equipment/v1/data/getEquipment/" + equipmentCodeOrName, queries, headerParams);
String json = "{\"code\":\"M0000\",\"ctime\":1560831201693,\"data\":[{\"corpId\":\"1115912149559242754\",\"createTime\":1560510880000,\"createUser\":\"122,1115912149777346561\",\"equipmentCode\":\"3123\",\"equipmentName\":\"6月10日\",\"equipmentNote\":\"11\",\"equipmentSpatial\":{\"canDelete\":1,\"createTime\":1559805649000,\"createUserUuid\":\"122,1115912149777346561\",\"equipmentProperties\":[{\"dimCode\":\"spatial_position\",\"flag\":false,\"id\":693,\"isEnable\":1,\"propName\":\"x\",\"propUuid\":\"xxxx\",\"value\":\"11\"},{\"dimCode\":\"spatial_position\",\"flag\":false,\"id\":694,\"isEnable\":1,\"propName\":\"y\",\"propUuid\":\"yyyy\",\"value\":\"200000\"}],\"id\":41,\"isEnable\":1,\"spaCode\":\"2343rrfd\",\"spaName\":\"位置定义-位置类型5月31日\",\"spaUuid\":\"spatial_position3d115ac1-5188-42e1-b48f-2703b0586d0b20190531151112\",\"updateTime\":1559805649000,\"updateUserUuid\":\"122\"},\"equipmentUuid\":\"equipmentb5503f61-52bd-439d-9a3b-b63963ac111e20190610090127\",\"id\":59,\"manufacturerUuid\":\"6acda105-e05c-4804-a97e-ec920e348d0d20190531151029\",\"organizationCode\":\"178\",\"organizationCodeList\":[\"178\"],\"principalsUuid\":\"113,124,127\",\"principalsUuidList\":[\"113\",\"124\",\"127\"],\"specifications\":\"434\",\"status\":1,\"tagUid\":\"\",\"updateTime\":1560510880000,\"useTime\":1560510880000},{\"corpId\":\"1115912149559242754\",\"createTime\":1560510882000,\"createUser\":\"122,1115912149777346561\",\"equipmentCode\":\"213123\",\"equipmentName\":\"2323s\",\"equipmentNote\":\"111\",\"equipmentSpatial\":{\"canDelete\":1,\"createTime\":1559805649000,\"createUserUuid\":\"122,1115912149777346561\",\"equipmentProperties\":[{\"dimCode\":\"spatial_position\",\"flag\":false,\"id\":693,\"isEnable\":1,\"propName\":\"x\",\"propUuid\":\"xxxx\",\"value\":\"11\"},{\"dimCode\":\"spatial_position\",\"flag\":false,\"id\":694,\"isEnable\":1,\"propName\":\"y\",\"propUuid\":\"yyyy\",\"value\":\"200000\"}],\"id\":41,\"isEnable\":1,\"spaCode\":\"2343rrfd\",\"spaName\":\"位置定义-位置类型5月31日\",\"spaUuid\":\"spatial_position3d115ac1-5188-42e1-b48f-2703b0586d0b20190531151112\",\"updateTime\":1559805649000,\"updateUserUuid\":\"122\"},\"equipmentUuid\":\"equipmentfe41b5e3-c7fa-4d06-bbec-a8d3891bd66620190610090520\",\"id\":60,\"manufacturerUuid\":\"6acda105-e05c-4804-a97e-ec920e348d0d20190531151029\",\"organizationCode\":\"178\",\"organizationCodeList\":[\"178\"],\"principalsUuid\":\"113,124,127\",\"principalsUuidList\":[\"113\",\"124\",\"127\"],\"specifications\":\"321323\",\"status\":1,\"tagUid\":\"\",\"updateTime\":1560510882000,\"updateUserUuid\":\"122,1115912149777346561\",\"useTime\":1560510882000}],\"message\":\"OK\"}";
return JSON.parseObject(json, new TypeReference<Ret<List<MTEquipmentInfoRspDTO>>>() {
}).getData();
}
/**
* 查询所有的dimCode
* @param corpId
* @param accessToken
* @return
*/
public Map<String, Object> getDictionaryBySearch(String corpId, String accessToken) {
Map<String, Object> queries = new HashMap<>(3);
queries.put("name", "");
queries.put("pageNum", 1);
queries.put("pageSize", 1000);
Map<String, String> headerParams = new HashMap<>(2);
headerParams.put("clientType", "app");
headerParams.put("corpId", corpId);
//headerParams.put("Authorization", "Bearer " + accessToken);
//String json = okHttpUtil.postForJson(api + "equipment/v1/dictionary/getDictionaryBySearch?dictionaryCode=dim", queries, headerParams);
String json = "{\"code\":\"M0000\",\"ctime\":1560830352136,\"data\":{\"rows\":[{\"code\":\"equipment_classification\",\"id\":1,\"name\":\"设备类型\"},{\"code\":\"spatial_position\",\"id\":2,\"name\":\"空间位置\"},{\"code\":\"technological_position\",\"id\":3,\"name\":\"工艺位置\"}],\"total\":3},\"message\":\"OK\"}";
return JSON.parseObject(json, new TypeReference<Ret<Map<String, Object>>>() {
}).getData();
}
}
package com.zgiot.zx.workflow.utils;
import com.alibaba.fastjson.JSON;
import com.zgiot.zx.workflow.dto.MTLogReqDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
/**
* @author David
*/
@Component
public class MTLogApiRequestClient {
private static final Logger logger = LoggerFactory.getLogger(MTLogApiRequestClient.class);
@Autowired
private OkHttpUtil okHttpUtil;
@Value("${mt.api}")
private String api;
/**
*
* @param zxAccountId
* @param MTLogReqDTO
* @param accessToken
* @return
*/
public String save(String zxAccountId, MTLogReqDTO MTLogReqDTO, String accessToken) {
Map<String, String> headerParams = new HashMap<>(2);
headerParams.put("clientType", "app");
headerParams.put("Authorization", "Bearer " + accessToken);
return okHttpUtil.postForJson(api + "log/api/v1/applog/save?zxAccountId=" + zxAccountId, JSON.toJSONString(MTLogReqDTO), headerParams);
}
}
package com.zgiot.zx.workflow.utils;
import com.zgiot.zx.workflow.dto.MTNotificationSendReqDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
/**
* 消息通知接口调用
* @author David
*/
@Component
public class MTNotificationApiRequestClient {
static final Logger logger = LoggerFactory.getLogger(MTNotificationApiRequestClient.class);
@Autowired
private OkHttpUtil okHttpUtil;
@Value("${mt.api}")
private String api;
/**
* 发送通知
* @param mtNotificationSendReqDTO
* @param accessToken
* @return
*/
public String send(MTNotificationSendReqDTO mtNotificationSendReqDTO, String accessToken) {
Map<String, String> headerParams = new HashMap<>(2);
headerParams.put("clientType", "app");
headerParams.put("Authorization", "Bearer " + accessToken);
return "success 发送成功";
// return okHttpUtil.postForJson(api + "api/notification/v1/notification/send", JSON.toJSONString(mtNotificationSendReqDTO), headerParams);
}
}
package com.zgiot.zx.workflow.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.zgiot.zx.workflow.base.Ret;
import com.zgiot.zx.workflow.dto.MTOssRspDTO;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.util.HashMap;
import java.util.Map;
/**
* 消息通知接口调用
* @author David
*/
@Component
public class MTOSSApiRequestClient {
private static final Logger logger = LoggerFactory.getLogger(MTOSSApiRequestClient.class);
@Autowired
private OkHttpUtil okHttpUtil;
@Value("${mt.api}")
private String api;
/**
* 文件上传OSS,可以直接取url
* @param file
* @param accessToken
* @return
*/
public MTOssRspDTO upload(MultipartFile file, String accessToken) {
Map<String, Object> map = new HashMap<>(3);
map.put("file", file);
map.put("bucket", "2");
map.put("path", "2");
Map<String, String> headerParams = new HashMap<>(2);
headerParams.put("clientType", "app");
headerParams.put("Authorization", "Bearer " + accessToken);
String json = okHttpUtil.postFile(api + "oss/v1/file/upload", map, "multipart/form-data", headerParams);
if(StringUtils.isNotEmpty(json)) {
return JSON.parseObject(json, new TypeReference<Ret<MTOssRspDTO>>() {}).getData();
}
return null;
}
}
package com.zgiot.zx.workflow.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.zgiot.zx.workflow.base.Ret;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
/**
* @author David
*/
@Component
public class MTOauthApiRequestClient {
private static final Logger logger = LoggerFactory.getLogger(MTOauthApiRequestClient.class);
@Autowired
private OkHttpUtil okHttpUtil;
@Value("${mt.api}")
private String api;
/**
* 根据appId(分配的微应用ID)获取免登录code
* @param corpId
* @param appId
* @param accessToken
* @return
*/
public String getAuthCode(String corpId, String appId, String accessToken) {
Map<String, String> queries = new HashMap<>(2);
queries.put("corpId", corpId);
queries.put("appId", appId);
Map<String, String> headerParams = new HashMap<>(2);
headerParams.put("clientType", "app");
headerParams.put("Authorization", "Bearer " + accessToken);
String json = okHttpUtil.get(api + "oauth/getAuthCode", queries, headerParams);
return JSON.parseObject(json, new TypeReference<Ret<String>>() {}).getData();
}
/**
* 根据code获取token
* @param code
* @return
*/
public String getTokenByCode(String code) {
Map<String, String> queries = new HashMap<>(1);
queries.put("code", code);
String json = okHttpUtil.get(api + "oauth/getTokenByCode", queries, null);
return JSON.parseObject(json, new TypeReference<Ret<Map<String, String>>>() {}).getData().get("access_token");
}
}
package com.zgiot.zx.workflow.utils;
import org.apache.commons.io.IOUtils;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
/**
* @author David
*/
public class MultipartFileUtils {
/**
* MultipartFile 转 File
*
* @param file
* @throws Exception
*/
public static void multipartFileToFile(@RequestParam MultipartFile file) throws Exception {
File toFile = null;
if (file.equals("") || file.getSize() <= 0) {
file = null;
} else {
InputStream ins = null;
ins = file.getInputStream();
toFile = new File(file.getOriginalFilename());
inputStreamToFile(ins, toFile);
ins.close();
}
}
/**
* File 转 MultipartFile
*
* @param file
* @throws Exception
*/
public static MultipartFile fileToMultipartFile(File file) throws Exception {
FileInputStream fileInput = new FileInputStream(file);
return new MockMultipartFile("file", file.getName(), "text/plain", IOUtils.toByteArray(fileInput));
}
private static void inputStreamToFile(InputStream ins, File file) {
try {
OutputStream os = new FileOutputStream(file);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
ins.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.zgiot.zx.workflow.utils;
import okhttp3.*;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.File;
import java.util.Iterator;
import java.util.Map;
/**
*
* @author David
*/
@Component
public class OkHttpUtil {
private static final Logger logger = LoggerFactory.getLogger(OkHttpUtil.class);
@Autowired
private OkHttpClient okHttpClient;
/**
* get
*
* @param url 请求的url
* @param queries 请求的参数,在浏览器?后面的数据,没有可以传null
* @return
*/
public String get(String url, Map<String, String> queries, Map<String, String> headerParams) {
String responseBody = "";
StringBuffer sb = new StringBuffer(url);
if (queries != null && queries.keySet().size() > 0) {
boolean firstFlag = true;
Iterator iterator = queries.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry entry = (Map.Entry<String, String>) iterator.next();
if (firstFlag) {
sb.append("?" + entry.getKey() + "=" + entry.getValue());
firstFlag = false;
} else {
sb.append("&" + entry.getKey() + "=" + entry.getValue());
}
}
}
Request.Builder requestBuilder = new Request.Builder().url(url);
for(Map.Entry<String, String> entry : headerParams.entrySet()) {
requestBuilder.addHeader(entry.getKey(), entry.getValue());
}
Request request = requestBuilder.url(sb.toString())
.build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
int status = response.code();
if (status == 200) {
return response.body().string();
}
} catch (Exception e) {
logger.error("okhttp put error >> ex = {}", ExceptionUtils.getStackTrace(e));
} finally {
if (response != null) {
response.close();
}
}
return responseBody;
}
/**
* post
*
* @param url 请求的url
* @param params post form 提交的参数
* @return
*/
public String post(String url, Map<String, String> params, Map<String, String> headerParams) {
String responseBody = "";
FormBody.Builder builder = new FormBody.Builder();
//添加参数
if (params != null && params.keySet().size() > 0) {
for (String key : params.keySet()) {
builder.add(key, params.get(key));
}
}
Request.Builder requestBuilder = new Request.Builder().url(url);
for(Map.Entry<String, String> entry : headerParams.entrySet()) {
requestBuilder.addHeader(entry.getKey(), entry.getValue());
}
Request request = requestBuilder.post(builder.build()).build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
int status = response.code();
if (status == 200) {
return response.body().string();
}
} catch (Exception e) {
logger.error("okhttp post error >> ex = {}", ExceptionUtils.getStackTrace(e));
} finally {
if (response != null) {
response.close();
}
}
return responseBody;
}
/**
* post
*
* @param url 请求的url
* @param params post form 提交的参数
* @return
*/
public String postForJson(String url, String json, Map<String, String> headerParams) {
RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8"), json);
String responseBody = "";
Request.Builder requestBuilder = new Request.Builder().url(url);
for(Map.Entry<String, String> entry : headerParams.entrySet()) {
requestBuilder.addHeader(entry.getKey(), entry.getValue());
}
Request request = requestBuilder.post(requestBody).build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
int status = response.code();
if (status == 200) {
return response.body().string();
}
} catch (Exception e) {
logger.error("okhttp post error >> ex = {}", ExceptionUtils.getStackTrace(e));
} finally {
if (response != null) {
response.close();
}
}
return responseBody;
}
/**
* post 上传文件
*
* @param url
* @param params
* @param fileType
* @return
*/
public String postFile(String url, Map<String, Object> params, String fileType, Map<String, String> headerParams) {
String responseBody = "";
MultipartBody.Builder builder = new MultipartBody.Builder();
//添加参数
if (params != null && params.keySet().size() > 0) {
for (String key : params.keySet()) {
if (params.get(key) instanceof File) {
File file = (File) params.get(key);
builder.addFormDataPart(key, file.getName(), RequestBody.create(MediaType.parse(fileType), file));
continue;
}
builder.addFormDataPart(key, params.get(key).toString());
}
}
Request.Builder requestBuilder = new Request.Builder();
for(Map.Entry<String, String> entry : headerParams.entrySet()) {
requestBuilder.addHeader(entry.getKey(), entry.getValue());
}
Request request = requestBuilder.url(url).post(builder.build()).build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
int status = response.code();
if (status == 200) {
return response.body().string();
}
} catch (Exception e) {
logger.error("okhttp postFile error >> ex = {}", ExceptionUtils.getStackTrace(e));
} finally {
if (response != null) {
response.close();
}
}
return responseBody;
}
}
\ No newline at end of file
package com.zgiot.zx.workflow.utils;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
public class PinYinUtils {
/**
* 得到 全拼
*
* @param src
* @return
*/
public static String getPingYin(String src) {
char[] t1 = null;
t1 = src.toCharArray();
String[] t2 = new String[t1.length];
HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat();
t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);
t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
t3.setVCharType(HanyuPinyinVCharType.WITH_V);
String t4 = "";
int t0 = t1.length;
try {
for (int i = 0; i < t0; i++) {
// 判断是否为汉字字符
if (Character.toString(t1[i]).matches("[\\u4E00-\\u9FA5]+")) {
t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3);
t4 += t2[0];
} else {
t4 += Character.toString(t1[i]);
}
}
return t4;
} catch (BadHanyuPinyinOutputFormatCombination e1) {
e1.printStackTrace();
}
return t4;
}
/**
* 得到中文首字母(包括字符串中字母)
*
* @param str
* @return
*/
public static String getPinYinHeadChar(String str) {
String convert = "";
for (int j = 0; j < str.length(); j++) {
char word = str.charAt(j);
String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);
if (pinyinArray != null) {
convert += pinyinArray[0].charAt(0);
} else {
convert += word;
}
}
return convert;
}
/**
* 将字符串转移为ASCII码
*
* @param cnStr
* @return
*/
public static String getCnASCII(String cnStr) {
StringBuffer strBuf = new StringBuffer();
byte[] bGBK = cnStr.getBytes();
for (int i = 0; i < bGBK.length; i++) {
// System.out.println(Integer.toHexString(bGBK[i]&0xff));
strBuf.append(Integer.toHexString(bGBK[i] & 0xff));
}
return strBuf.toString();
}
public static void main(String[] args) {
String cnStr = "张大伟";
System.out.println(getPingYin(cnStr));
System.out.println(getPinYinHeadChar(cnStr).replaceAll("[^a-z^A-Z^]", ""));
String str = getPinYinHeadChar(cnStr).replaceAll("[^a-z^A-Z^]", "");
}
}
package com.zgiot.zx.workflow.utils;
public class StringUtil {
private static String string = "abcdefghijklmnopqrstuvwxyz";
private static int getRandom(int count) {
return (int) Math.round(Math.random() * (count));
}
public static String getRandomString(int length){
StringBuffer sb = new StringBuffer();
int len = string.length();
for (int i = 0; i < length; i++) {
sb.append(string.charAt(getRandom(len-1)));
}
return sb.toString();
}
}
server.port=8082
spring.application.name=workflow-service-provider
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#spring.datasource.url=jdbc:mysql://localhost:3306/workflow?useUnicode=true&characterEncoding=utf-8&useSSL=false
#spring.datasource.username=root
#spring.datasource.password=root
spring.datasource.url=jdbc:mysql://127.0.0.1:10036/jzdb?useUnicode=true&characterEncoding=UTF-8&useSSL=false&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
spring.datasource.username=root
spring.datasource.password=pvv5718J0CwhNfn4B^8^H3igPj#oiQkX
#spring.datasource.url=jdbc:mysql://192.168.1.254:3306/workflow?useUnicode=true&characterEncoding=utf-8&useSSL=false
#spring.datasource.username=root
#spring.datasource.password=root
#eureka.client.service-url.defaultZone=http://localhost:8799/eureka/
spring.activiti.database-schema-update=true
spring.activiti.check-process-definitions=false
mybatis-plus.mapper-locations=classpath:/mapper/**/*Mapper.xml
logging.level.com.zgiot.zx.workflow.mapper=DEBUG
logging.level.com.zgiot.zx.workflow.controller=warn
logging.level.pattern.console="%d - %msg%n"
mt.api = http://127.0.0.1:8081/api/
#mt.api=http://192.168.5.47/api/
#temp-file.path=/home/file/
#template.processfile.path=/home/file/
temp-file.path=D://tempfile//
template.processfile.path=D://processfile//
#template.processfile.path=//users//zhaopengxiang//ideaProjects//file//
server.port=8082
spring.application.name=workflow-service-provider
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#spring.datasource.url=jdbc:mysql://localhost:3306/workflow?useUnicode=true&characterEncoding=utf-8&useSSL=false
#spring.datasource.username=root
#spring.datasource.password=root
spring.datasource.url=jdbc:mysql://127.0.0.1:10036/jzdb?useUnicode=true&characterEncoding=UTF-8&useSSL=false&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
spring.datasource.username=root
spring.datasource.password=pvv5718J0CwhNfn4B^8^H3igPj#oiQkX
#spring.datasource.url=jdbc:mysql://192.168.1.254:3306/workflow?useUnicode=true&characterEncoding=utf-8&useSSL=false
#spring.datasource.username=root
#spring.datasource.password=root
#eureka.client.service-url.defaultZone=http://localhost:8799/eureka/
spring.activiti.database-schema-update=true
spring.activiti.check-process-definitions=false
mybatis-plus.mapper-locations=classpath:/mapper/**/*Mapper.xml
logging.level.com.zgiot.zx.workflow.mapper=DEBUG
logging.level.com.zgiot.zx.workflow.controller=warn
logging.level.pattern.console="%d - %msg%n"
mt.api = http://127.0.0.1:8081/api/
#mt.api=http://192.168.5.47/api/
#temp-file.path=/home/file/
#template.processfile.path=/home/file/
temp-file.path=/working/tempfile/
template.processfile.path=/working/processfile/
#template.processfile.path=//users//zhaopengxiang//ideaProjects//file//
server.port=8084
spring.application.name=workflow-service-provider
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#spring.datasource.url=jdbc:mysql://localhost:3306/workflow?useUnicode=true&characterEncoding=utf-8&useSSL=false
#spring.datasource.username=root
#spring.datasource.password=root
spring.datasource.url=jdbc:mysql://192.168.1.71:3306/jzdb?useUnicode=true&characterEncoding=UTF-8&useSSL=false&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
spring.datasource.username=root
spring.datasource.password=aLN%4Jx7ZsmsoMlOB0XEd7
#spring.datasource.url=jdbc:mysql://192.168.1.254:3306/workflow?useUnicode=true&characterEncoding=utf-8&useSSL=false
#spring.datasource.username=root
#spring.datasource.password=root
#eureka.client.service-url.defaultZone=http://localhost:8799/eureka/
spring.activiti.database-schema-update=true
spring.activiti.check-process-definitions=false
mybatis-plus.mapper-locations=classpath:/mapper/**/*Mapper.xml
logging.level.com.zgiot.zx.workflow.mapper=DEBUG
logging.level.com.zgiot.zx.workflow.controller=warn
logging.level.pattern.console="%d - %msg%n"
mt.api = http://192.168.1.71:8083/api/
#mt.api=http://192.168.5.47/api/
#temp-file.path=/home/file/
#template.processfile.path=/home/file/
temp-file.path=/working/tempfile/
template.processfile.path=/working/processfile/
#template.processfile.path=//users//zhaopengxiang//ideaProjects//file//
spring.profiles.active=dev
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zgiot.zx.workflow.mapper.SDeptMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zgiot.zx.workflow.mapper.SRoleMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zgiot.zx.workflow.mapper.SUserMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zgiot.zx.workflow.mapper.TbRoleMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zgiot.zx.workflow.mapper.TbUserMapper">
<select id="queryUserByRoleId" parameterType="java.lang.String" resultType="java.lang.String">
select distinct tb_user.id
from tb_user
left join tb_user_role on tb_user.id = tb_user_role.user_id
where tb_user_role.role_id IN
<foreach collection="array" item="id" index="index" open="(" close=")" separator=",">
#{id}
</foreach>
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zgiot.zx.workflow.mapper.WorkApproveHiMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zgiot.zx.workflow.mapper.WorkApproveMapper">
<select id="getRoleNameByTemplateIdAndActivityId" resultType="java.lang.String">
SELECT tb_role.name from workflow_template_approve wta
LEFT JOIN tb_role on wta.person_data = tb_role.id
where wta.person_type = 2
and wta.template_id = #{templateId} and wta.activity_id = #{activityId}
</select>
<select id="selectApproveData" resultType="com.zgiot.zx.workflow.entity.TemplateApproveDO" parameterType="com.zgiot.zx.workflow.entity.TemplateApproveDO">
select distinct t1.template_id,t1.activity_id,t1.activity_nm,t2.person_data from workflow_template_approve t1
left join workflow_approve_data t2 on t1.activity_id = t2.activity_id
where t1.person_type = #{personType}
and t1.template_id = #{templateId}
<if test="workId != null and workId != ''">
and t2.work_id = #{workId}
</if>
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zgiot.zx.workflow.mapper.WorkPermissionHiMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zgiot.zx.workflow.mapper.WorkPermissionMapper">
<select id="selectListByTemplateId" resultType="com.zgiot.zx.workflow.dto.WorkPermissionResDTO" parameterType="java.util.Map">
SELECT
wp.*,
wtf.field_nm
FROM
workflow_template_permission wp
LEFT JOIN workflow_template_form_field wtf ON wp.field_id = wtf.id
where
wp.template_id = #{templateId}
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zgiot.zx.workflow.mapper.WorkTemplateMapper">
<resultMap id="BaseResultMap" type="com.zgiot.zx.workflow.entity.TemplateDO">
<id column="id" jdbcType="VARCHAR" property="id"/>
<result column="status" jdbcType="VARCHAR" property="status"/>
<result column="template_nm" jdbcType="VARCHAR" property="templateNm"/>
<result column="template_type" jdbcType="VARCHAR" property="templateType"/>
<result column="work_tp_id" jdbcType="VARCHAR" property="workTpId"/>
<result column="phone" jdbcType="VARCHAR" property="phone"/>
<result column="create_roles" jdbcType="VARCHAR" property="createRoles"/>
<result column="manager_roles" jdbcType="VARCHAR" property="managerRoles"/>
<result column="template_explain" jdbcType="VARCHAR" property="templateExplain"/>
<result column="if_enable" jdbcType="VARCHAR" property="ifEnable"/>
<result column="icon_image" jdbcType="BLOB" property="iconImage"/>
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
</resultMap>
<!--<cache type="${corePackag!}.util.RedisCache"/>-->
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zgiot.zx.workflow.mapper.ProcessGatewayHiMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zgiot.zx.workflow.mapper.ProcessGatewayMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zgiot.zx.workflow.mapper.WorkflowTaskRepository">
<!--<cache type="${corePackag!}.util.RedisCache"/>-->
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zgiot.zx.workflow.mapper.WorkflowTemplateFormFieldHiRepository">
<resultMap id="BaseResultMap" type="com.zgiot.zx.workflow.entity.WorkflowTemplateFormFieldHi">
<id column="id" jdbcType="VARCHAR" property="id"/>
<result column="template_id" jdbcType="VARCHAR" property="templateId"/>
<result column="field_tp" jdbcType="VARCHAR" property="fieldTp"/>
<result column="field_nm" jdbcType="VARCHAR" property="fieldNm"/>
<result column="field_order" jdbcType="INTEGER" property="fieldOrder"/>
<result column="field_hint" jdbcType="VARCHAR" property="fieldHint"/>
<result column="required" jdbcType="VARCHAR" property="required"/>
<result column="print" jdbcType="VARCHAR" property="print"/>
<result column="major" jdbcType="VARCHAR" property="major"/>
<result column="expand" jdbcType="VARCHAR" property="expand"/>
</resultMap>
<!--<cache type="${corePackag!}.util.RedisCache"/>-->
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zgiot.zx.workflow.mapper.WorkflowTemplateFormFieldRepository">
<!--<cache type="${corePackag!}.util.RedisCache"/>-->
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zgiot.zx.workflow.mapper.WorkflowTemplateHiRepository">
<resultMap id="BaseResultMap" type="com.zgiot.zx.workflow.entity.WorkflowTemplateHi">
<id column="id" jdbcType="VARCHAR" property="id"/>
<result column="template_nm" jdbcType="VARCHAR" property="templateNm"/>
<result column="work_tp_id" jdbcType="VARCHAR" property="workTpId"/>
<result column="phone" jdbcType="VARCHAR" property="phone"/>
<result column="create_roles" jdbcType="VARCHAR" property="createRoles"/>
<result column="manager_roles" jdbcType="VARCHAR" property="managerRoles"/>
<result column="template_explain" jdbcType="VARCHAR" property="templateExplain"/>
<result column="if_enable" jdbcType="VARCHAR" property="ifEnable"/>
<result column="icon_image" jdbcType="BLOB" property="iconImage"/>
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
<result column="version" jdbcType="VARCHAR" property="version"/>
<result column="type_template" jdbcType="VARCHAR" property="typeTemplate"/>
</resultMap>
<!--<cache type="${corePackag!}.util.RedisCache"/>-->
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zgiot.zx.workflow.mapper.WorkTemplateMapper">
<!--<cache type="${corePackag!}.util.RedisCache"/>-->
</mapper>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论