Commit 1a06d676 authored by 赵啸非's avatar 赵啸非

Merge remote-tracking branch 'origin/master'

parents ac11ff46 202450cf
...@@ -11,4 +11,5 @@ VUE_APP_WEBSOCKET_API =127.0.0.1:18222/m ...@@ -11,4 +11,5 @@ VUE_APP_WEBSOCKET_API =127.0.0.1:18222/m
VUE_APP_PORTAL_URL = /portal_home VUE_APP_PORTAL_URL = /portal_home
VUE_APP_PORTAL_PORT = 17300 VUE_APP_PORTAL_PORT = 17300
VUE_APP_API_appName = '智慧政务绩效管理系统'
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width,initial-scale=1.0"> <meta name="viewport" content="width=device-width,initial-scale=1.0" />
<link rel="icon" href="<%= BASE_URL %>favicon.ico"> <link rel="icon" href="<%= BASE_URL %>favicon.ico" />
<title>智慧政务绩效管理系统</title> <title>智慧政务绩效管理系统</title>
<link rel="stylesheet" href="https://unpkg.com/element-ui@2.15.5/lib/theme-chalk/index.css"> <link
rel="stylesheet"
href="https://unpkg.com/element-ui@2.15.5/lib/theme-chalk/index.css"
/>
</head> </head>
<body> <body>
<noscript> <noscript>
<strong>We're sorry but app doesn't work properly without JavaScript enabled. Please enable it to continue.</strong> <strong
>We're sorry but app doesn't work properly without JavaScript enabled.
Please enable it to continue.</strong
>
</noscript> </noscript>
<div id="app"></div> <div id="app"></div>
<!-- built files will be auto injected --> <!-- built files will be auto injected -->
......
...@@ -24,15 +24,16 @@ export default { ...@@ -24,15 +24,16 @@ export default {
beforeCreate() { beforeCreate() {
Vue.prototype.$app = this; Vue.prototype.$app = this;
}, },
created() {}, created() {
},
methods: {}, methods: {},
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
#app { #app {
height:100vh; height: 100vh;
.loading { .loading {
display: flex; display: flex;
align-items: center; align-items: center;
......
...@@ -10,13 +10,13 @@ ...@@ -10,13 +10,13 @@
</i> </i>
<router-link to="/"> <router-link to="/">
<img <img
src="../assets/images/logo.png" :src="sysLogo ? sysLogo : require('../assets/images/logo.png')"
style="margin-bottom: 5px; margin-left: 24px" style="margin-bottom: 5px; margin-left: 24px"
height="40" height="40"
alt="" alt=""
/> />
<b style="color: white; font-size: 20px"> <b style="color: white; font-size: 20px">
&nbsp;&nbsp;&nbsp;智慧政务绩效管理系统 &nbsp;&nbsp;&nbsp;{{ sysName ? sysName : "智慧政务绩效管理系统" }}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</b> </b>
</router-link> </router-link>
...@@ -172,6 +172,12 @@ export default { ...@@ -172,6 +172,12 @@ export default {
data() { data() {
return { return {
showMobileMenu: false, showMobileMenu: false,
sysName: localStorage.getItem("sysName")
? localStorage.getItem("sysName")
: "",
sysLogo: localStorage.getItem("sysLogo")
? localStorage.getItem("sysLogo")
: "",
}; };
}, },
created() {}, created() {},
......
...@@ -5,50 +5,61 @@ ...@@ -5,50 +5,61 @@
</template> </template>
<script> <script>
import jwt_decode from "jwt-decode"; import jwt_decode from "jwt-decode";
export default { export default {
name: 'sso', name: "sso",
created () { created() {},
},
mounted() { mounted() {
let token = this.$route.query.token let token = this.$route.query.token;
console.log("token:"+token) console.log("token:" + token);
console.log("解析后的token:",jwt_decode(token)) console.log("解析后的token:", jwt_decode(token));
//const decode = jwt_decode(data.normal_login_token).accountId; // 解析 //const decode = jwt_decode(data.normal_login_token).accountId; // 解析
if(token) { if (token) {
//本地登录后跳转 //本地登录后跳转
this.form.loginName=jwt_decode(token).userInfo.account this.form.loginName = jwt_decode(token).userInfo.account;
this.form.password=jwt_decode(token).userInfo.password this.form.password = jwt_decode(token).userInfo.password;
/* this.form.loginName="admin" this.$route.query.sysName
? localStorage.setItem("sysName", this.$route.query.sysName)
: "";
this.$route.query.sysLogo
? localStorage.setItem("sysLogo", this.$route.query.sysLogo)
: "";
this.$route.query.sysName
? (document.title = this.$route.query.sysName)
: "";
/* this.form.loginName="admin"
this.form.password="scsmile"*/ this.form.password="scsmile"*/
this.login() this.login();
//window.sessionStorage.setItem("token", token); //window.sessionStorage.setItem("token", token);
// this.$router.push('/index') // 有token直接跳转首页 // this.$router.push('/index') // 有token直接跳转首页
}else{ } else {
this.$message({ this.$message({
message: '没有权限,正在跳转登录页面...', message: "没有权限,正在跳转登录页面...",
center: true center: true,
}); });
setTimeout(function(){ setTimeout(function() {
window.location.href=process.env.VUE_APP_PORTAL_URL=='undefined'?'http://192.168.0.98:11072':process.env.VUE_APP_PORTAL_URL window.location.href =
//this.$router.push('/login') process.env.VUE_APP_PORTAL_URL == "undefined"
},1000) ? "http://192.168.0.98:11072"
: process.env.VUE_APP_PORTAL_URL;
//this.$router.push('/login')
}, 1000);
} }
}, },
methods: { methods: {
login() { login() {
this.loading = true; this.loading = true;
this.$post("/login/login", this.form) this.$post("/login/login", this.form)
.then(this.loginSuccess) .then(this.loginSuccess)
.catch(this.loginFail); .catch(this.loginFail);
}, },
loginSuccess({ data }) { loginSuccess({ data }) {
console.log("userData", data); console.log("userData", data);
this.$store.commit("setUserData", data); this.$store.commit("setUserData", data);
this.$router.push('/index') // 有token直接跳转首页 this.$router.push("/index"); // 有token直接跳转首页
/* this.$router.replace({ /* this.$router.replace({
path: this.redirect, path: this.redirect,
});*/ });*/
}, },
...@@ -60,15 +71,15 @@ export default { ...@@ -60,15 +71,15 @@ export default {
data() { data() {
return { return {
form: { form: {
loginName: '', loginName: "",
password: '', password: "",
securityCode: '', securityCode: "",
}, },
redirect: this.$route.query.redirect, redirect: this.$route.query.redirect,
loading: true, loading: true,
} };
} },
} };
</script> </script>
<style> <style>
......
...@@ -24,7 +24,9 @@ ...@@ -24,7 +24,9 @@
> >
<el-col :span="12" <el-col :span="12"
>违规类型:{{ >违规类型:{{
form.irregularType ? form.irregularType : "--" form.irregularType
? util_formatter("irregularType", form.irregularType)
: "--"
}}</el-col }}</el-col
> >
</el-row> </el-row>
......
...@@ -3,20 +3,43 @@ ...@@ -3,20 +3,43 @@
<template> <template>
<div class="page page-login flex flex-v"> <div class="page page-login flex flex-v">
<div class="form-wrap flex flex-1"> <div class="form-wrap flex flex-1">
<el-form @submit.prevent='onSubmit' ref="form" :model="form" label-width="0px" size="small"> <el-form
<h1>智慧政务绩效管理系统</h1> @submit.prevent="onSubmit"
ref="form"
:model="form"
label-width="0px"
size="small"
>
<h1>{{ sysName ? sysName : "智慧政务绩效管理系统" }}</h1>
<div class="des">数据驱动绩效改善,强化从指标到目标全过程管理</div> <div class="des">数据驱动绩效改善,强化从指标到目标全过程管理</div>
<el-form-item label=""> <el-form-item label="">
<el-input v-model="form.loginName" placeholder="请输入用户名" class="input"></el-input> <el-input
v-model="form.loginName"
placeholder="请输入用户名"
class="input"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label=""> <el-form-item label="">
<el-input v-model="form.password" type='password' placeholder="请输入密码" class="input"></el-input> <el-input
v-model="form.password"
type="password"
placeholder="请输入密码"
class="input"
></el-input>
</el-form-item> </el-form-item>
<el-form-item size="large"> <el-form-item size="large">
<el-button type="primary" native-type='submit' :loading='loading' @click='onSubmit'>登录</el-button> <el-button
type="primary"
native-type="submit"
:loading="loading"
@click="onSubmit"
>登录</el-button
>
</el-form-item> </el-form-item>
<div class="tips">温馨提示:请使用谷歌或火狐等非ie内核浏览器,观看效果更佳</div> <div class="tips">
温馨提示:请使用谷歌或火狐等非ie内核浏览器,观看效果更佳
</div>
</el-form> </el-form>
</div> </div>
...@@ -31,7 +54,15 @@ import { createSocket } from "@/assets/utils/websocket"; ...@@ -31,7 +54,15 @@ import { createSocket } from "@/assets/utils/websocket";
export default { export default {
name: "login", name: "login",
created() {}, created() {
this.$route.query.sysName
? localStorage.setItem("sysName", this.$route.query.sysName)
: "";
this.$route.query.sysName
? (document.title = this.$route.query.sysName)
: "";
localStorage.setItem("sysLogo", this.$route.query.sysLogo);
},
methods: { methods: {
login() { login() {
this.loading = true; this.loading = true;
...@@ -41,11 +72,11 @@ export default { ...@@ -41,11 +72,11 @@ export default {
}, },
loginSuccess({ data }) { loginSuccess({ data }) {
console.log("userData", data); console.log("userData", data);
console.log("redirect",this.redirect) console.log("redirect", this.redirect);
this.$store.commit("setUserData", data); this.$store.commit("setUserData", data);
this.$router.replace({ this.$router.replace({
path: this.redirect, path: this.redirect,
}) });
//成功 创建websocket连接 process.env.VUE_WEBSOCKET_BASE_API + //成功 创建websocket连接 process.env.VUE_WEBSOCKET_BASE_API +
console.log("process", process.env); console.log("process", process.env);
...@@ -81,10 +112,11 @@ export default { ...@@ -81,10 +112,11 @@ export default {
form: { form: {
loginName: "", loginName: "",
password: "", password: "",
} },
} sysName: localStorage.getItem("sysName"),
} };
} },
};
</script> </script>
<style lang="less"> <style lang="less">
...@@ -94,14 +126,15 @@ export default { ...@@ -94,14 +126,15 @@ export default {
border-top: 2px solid #e8eaec; border-top: 2px solid #e8eaec;
} }
.page-login { .page-login {
background-image: url('~@/assets/images/login_bg.jpg'); background-image: url("~@/assets/images/login_bg.jpg");
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: cover; background-size: cover;
margin: 0; margin: 0;
height: 100%; height: 100%;
overflow: hidden; overflow: hidden;
text-align: center; text-align: center;
.des,.tips{ .des,
.tips {
font-size: 14px; font-size: 14px;
white-space: nowrap; white-space: nowrap;
margin-bottom: 20px; margin-bottom: 20px;
...@@ -123,33 +156,37 @@ export default { ...@@ -123,33 +156,37 @@ export default {
margin-top: 10px; margin-top: 10px;
width: 240px; width: 240px;
} }
.el-form-item{ .el-form-item {
margin-bottom: 28px; margin-bottom: 28px;
} }
.el-input-group__append { .el-input-group__append {
padding: 0; padding: 0;
font-size: 0; font-size: 0;
} }
.el-input{ .el-input {
width: 80%; width: 80%;
} }
.el-input__inner{ .el-input__inner {
border-color: #409EFF; border-color: #409eff;
border-radius: 20px; border-radius: 20px;
} }
.el-input--small .el-input__inner{ .el-input--small .el-input__inner {
height: 52px; height: 52px;
line-height: 1em; line-height: 1em;
font-size: 15px; font-size: 15px;
} }
.el-input__inner::placeholder{ .el-input__inner::placeholder {
color: #409EFF; color: #409eff;
} }
button{ button {
width: 80%; width: 80%;
border-radius: 20px; border-radius: 20px;
height: 52px; height: 52px;
background: linear-gradient(90deg, rgba(24, 69, 198, 1) 0%, rgba(41, 153, 255, 1) 100%); background: linear-gradient(
90deg,
rgba(24, 69, 198, 1) 0%,
rgba(41, 153, 255, 1) 100%
);
} }
} }
.footer { .footer {
...@@ -168,4 +205,3 @@ export default { ...@@ -168,4 +205,3 @@ export default {
// border-color: #409EFF; // border-color: #409EFF;
// } // }
</style> </style>
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
: item.subAddType == 2 : item.subAddType == 2
? "扣分方式:" ? "扣分方式:"
: "方式:" : "方式:"
}}{{ util_formatters("subMethod", item.subMethod) }}</span }}{{ util_formatter("subMethod", item.subMethod) }}</span
> >
</div> </div>
<div class="user-info"> <div class="user-info">
......
...@@ -47,6 +47,7 @@ import java.text.ParseException; ...@@ -47,6 +47,7 @@ import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.Duration; import java.time.Duration;
import java.util.Date; import java.util.Date;
import java.util.List;
import java.util.Map; import java.util.Map;
import static cn.hutool.core.date.DatePattern.*; import static cn.hutool.core.date.DatePattern.*;
...@@ -278,9 +279,10 @@ public class DingMessageController { ...@@ -278,9 +279,10 @@ public class DingMessageController {
leaveRecordEntity.setProcessStatus(2); leaveRecordEntity.setProcessStatus(2);
} }
if(result.getResult().compareToIgnoreCase("AGREE") == 0){ if(result.getResult().compareToIgnoreCase("AGREE") == 0){
if(result.getTasks().size() > 1){ if(result.getTasks().size() > 1){
if(result.getTasks().get(1).getStatus().compareToIgnoreCase("CANCELED") == 0){ if(result.getTasks().get(1).getStatus().compareToIgnoreCase("CANCELED") != 0){
leaveRecordEntity.setAuditResult(4); //撤销审批完成 leaveRecordEntity.setAuditResult(4); //撤销审批完成
}else { }else {
leaveRecordEntity.setAuditResult(1); leaveRecordEntity.setAuditResult(1);
...@@ -288,7 +290,8 @@ public class DingMessageController { ...@@ -288,7 +290,8 @@ public class DingMessageController {
} }
}else if(result.equals("")){ //撤销假期审批中result会为空 撤销审批通过后result为AGREE }else if(result.equals("")){ //撤销假期审批中result会为空 撤销审批通过后result为AGREE
if(result.getTasks().size() > 1){ if(result.getTasks().size() > 1){
if(result.getTasks().get(1).getStatus().compareToIgnoreCase("CANCELED") == 0){ log.info("status"+result.getTasks().get(1).getStatus());
if(result.getTasks().get(1).getStatus().compareToIgnoreCase("CANCELED") != 0){
leaveRecordEntity.setAuditResult(3); //撤销审批中 leaveRecordEntity.setAuditResult(3); //撤销审批中
} }
} }
...@@ -301,7 +304,7 @@ public class DingMessageController { ...@@ -301,7 +304,7 @@ public class DingMessageController {
log.info("钉钉返回的result:"+result.getResult()+"---auditresult:"+leaveRecordEntity.getAuditResult()); log.info("钉钉返回的result:"+result.getResult()+"---auditresult:"+leaveRecordEntity.getAuditResult());
leaveRecordEntity.setAuditDesc(result.getOperationRecords().get(0).getRemark()); leaveRecordEntity.setAuditDesc(result.getOperationRecords().get(0).getRemark());
leaveRecordEntity.setReason(result.getOperationRecords().get(0).getRemark());
//更新请假记录表 //更新请假记录表
AttendanceLeaveRecordEntity recordEntity = attendanceLeaveRecordService.selectOne(new AttendanceLeaveRecordQuery().remark(processInstanceId)); AttendanceLeaveRecordEntity recordEntity = attendanceLeaveRecordService.selectOne(new AttendanceLeaveRecordQuery().remark(processInstanceId));
if(ObjectUtils.isEmpty(recordEntity)){ if(ObjectUtils.isEmpty(recordEntity)){
...@@ -335,14 +338,22 @@ public class DingMessageController { ...@@ -335,14 +338,22 @@ public class DingMessageController {
if(leaveRecordsResponseBodyResultRest.getCode() == Rest.SUCCESS){ if(leaveRecordsResponseBodyResultRest.getCode() == Rest.SUCCESS){
OapiAttendanceVacationQuotaListResponse.OapiLeaveQuotaUserListVo result1 = leaveRecordsResponseBodyResultRest.getData(); OapiAttendanceVacationQuotaListResponse.OapiLeaveQuotaUserListVo result1 = leaveRecordsResponseBodyResultRest.getData();
double leaveBlance = 0; double leaveBlance = 0;
//如果钉钉有假期余额就写入钉钉返回的余额 否则用数据库表数据减去当前请假的天数 // //如果钉钉有假期余额就写入钉钉返回的余额 否则用数据库表数据减去当前请假的天数
if(result1.getLeaveQuotas() != null && result1.getLeaveQuotas().size() > 0){ // if(result1.getLeaveQuotas() != null && result1.getLeaveQuotas().size() > 0){
if(leaveRecordEntity.getAuditResult() == 4) { //撤销休假 要把已经扣除的假期加回来 // if(leaveRecordEntity.getAuditResult() == 4) { //撤销休假 要把已经扣除的假期加回来
leaveBlance = (result1.getLeaveQuotas().get(0).getQuotaNumPerDay() + result1.getLeaveQuotas().get(0).getUsedNumPerDay())/100; // if(!ObjectUtils.isEmpty(balanceEntity) && balanceEntity.getCompensatedLeaveDays() != null){
}else { // leaveBlance = balanceEntity.getCompensatedLeaveDays().floatValue() + result1.getLeaveQuotas().get(0).getUsedNumPerDay()/100;
leaveBlance = (result1.getLeaveQuotas().get(0).getQuotaNumPerDay() - result1.getLeaveQuotas().get(0).getUsedNumPerDay())/100; // }else {
} // leaveBlance = result1.getLeaveQuotas().get(0).getUsedNumPerDay()/100; //秒转换为天
} // }
// }else {
// if(!ObjectUtils.isEmpty(balanceEntity) && balanceEntity.getCompensatedLeaveDays() != null){
// leaveBlance = balanceEntity.getCompensatedLeaveDays().floatValue() - result1.getLeaveQuotas().get(0).getUsedNumPerDay()/100;
// }else {
// leaveBlance = - result1.getLeaveQuotas().get(0).getUsedNumPerDay()/100; //秒转换为天
// }
// }
// }
switch (leave_name) { switch (leave_name) {
case "调休": case "调休":
......
package com.mortals.xhx.module.attendance.service.impl; package com.mortals.xhx.module.attendance.service.impl;
import com.mortals.xhx.module.attendance.model.AttendanceVacationBalanceQuery;
import com.mortals.xhx.module.staff.model.StaffEntity;
import com.mortals.xhx.module.staff.service.StaffService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
...@@ -15,5 +19,42 @@ import com.mortals.xhx.module.attendance.service.AttendanceVacationBalanceServic ...@@ -15,5 +19,42 @@ import com.mortals.xhx.module.attendance.service.AttendanceVacationBalanceServic
*/ */
@Service("attendanceVacationBalanceService") @Service("attendanceVacationBalanceService")
public class AttendanceVacationBalanceServiceImpl extends AbstractCRUDServiceImpl<AttendanceVacationBalanceDao, AttendanceVacationBalanceEntity, Long> implements AttendanceVacationBalanceService { public class AttendanceVacationBalanceServiceImpl extends AbstractCRUDServiceImpl<AttendanceVacationBalanceDao, AttendanceVacationBalanceEntity, Long> implements AttendanceVacationBalanceService {
@Autowired
private StaffService staffService;
@Override
protected void saveBefore(AttendanceVacationBalanceEntity entity, Context context) throws AppException {
super.saveBefore(entity,context);
if(entity.getStaffId()==null){
throw new AppException("员工ID不能为空");
}
StaffEntity staff = staffService.get(entity.getStaffId());
if(staff==null){
throw new AppException("员工ID不正确");
}
entity.setStaffName(staff.getName());
entity.setDeptId(staff.getDeptId());
entity.setDeptName(staff.getDeptName());
}
@Override
public AttendanceVacationBalanceEntity save(AttendanceVacationBalanceEntity entity, Context context) throws AppException {
this.saveBefore(entity, context);
AttendanceVacationBalanceEntity temp = this.selectOne(new AttendanceVacationBalanceQuery().staffId(entity.getStaffId()));
int iRet = 0;
if(temp!=null){
entity.setId(temp.getId());
iRet = this.dao.update(entity);
}else {
iRet = this.dao.insert(entity);
}
if (iRet == 0) {
throw new AppException(-1001, "写入数据库失败!");
} else {
this.saveAfter(entity, context);
return entity;
}
}
} }
\ No newline at end of file
...@@ -141,9 +141,9 @@ public class DingPersonServiceImpl extends AbstractDingTalkService implements ID ...@@ -141,9 +141,9 @@ public class DingPersonServiceImpl extends AbstractDingTalkService implements ID
*/ */
public com.aliyun.teaopenapi.models.Config setConfig() { public com.aliyun.teaopenapi.models.Config setConfig() {
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config(); com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
config.protocol = "http"; // config.protocol = "http";
config.regionId = "central"; // config.regionId = "central";
config.endpoint = oaUrl; // config.endpoint = oaUrl;
return config; return config;
} }
...@@ -153,9 +153,9 @@ public class DingPersonServiceImpl extends AbstractDingTalkService implements ID ...@@ -153,9 +153,9 @@ public class DingPersonServiceImpl extends AbstractDingTalkService implements ID
com.aliyun.dingtalkworkflow_1_0.Client client = new com.aliyun.dingtalkworkflow_1_0.Client(setConfig()); com.aliyun.dingtalkworkflow_1_0.Client client = new com.aliyun.dingtalkworkflow_1_0.Client(setConfig());
com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceHeaders getProcessInstanceHeaders = new com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceHeaders(); com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceHeaders getProcessInstanceHeaders = new com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceHeaders();
getProcessInstanceHeaders.xAcsDingtalkAccessToken = getToken(); getProcessInstanceHeaders.xAcsDingtalkAccessToken = getToken();
HashMap<String, String> map = new HashMap<>(); // HashMap<String, String> map = new HashMap<>();
getProcessInstanceHeaders.setCommonHeaders(map); // getProcessInstanceHeaders.setCommonHeaders(map);
getProcessInstanceHeaders.getCommonHeaders().put("host", "172.15.28.113:8919"); // getProcessInstanceHeaders.getCommonHeaders().put("host", "172.15.28.113:8919");
com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceRequest getProcessInstanceRequest = new com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceRequest() com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceRequest getProcessInstanceRequest = new com.aliyun.dingtalkworkflow_1_0.models.GetProcessInstanceRequest()
.setProcessInstanceId(processInstanceId); .setProcessInstanceId(processInstanceId);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment