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,7 +24,8 @@ export default { ...@@ -24,7 +24,8 @@ export default {
beforeCreate() { beforeCreate() {
Vue.prototype.$app = this; Vue.prototype.$app = this;
}, },
created() {}, created() {
},
methods: {}, methods: {},
}; };
...@@ -32,7 +33,7 @@ export default { ...@@ -32,7 +33,7 @@ export default {
<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,36 +5,47 @@ ...@@ -5,36 +5,47 @@
</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 =
process.env.VUE_APP_PORTAL_URL == "undefined"
? "http://192.168.0.98:11072"
: process.env.VUE_APP_PORTAL_URL;
//this.$router.push('/login') //this.$router.push('/login')
},1000) }, 1000);
} }
}, },
methods: { methods: {
...@@ -47,8 +58,8 @@ export default { ...@@ -47,8 +58,8 @@ export default {
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>
......
...@@ -3,39 +3,118 @@ ...@@ -3,39 +3,118 @@
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body> <el-dialog :title="title" :visible.sync="open" width="90%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px"> <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row> <el-row>
<Field label="员工ID" prop="staffId" v-model="form.staffId" placeholder="请输入员工ID"/> <Field
<Field label="员工姓名" prop="staffName" v-model="form.staffName" placeholder="请输入员工姓名"/> label="员工ID"
<Field label="工号" prop="workNum" v-model="form.workNum" placeholder="请输入工号"/> prop="staffId"
<Field label="所属部门" prop="deptId" v-model="form.deptId" placeholder="请输入所属部门"/> v-model="form.staffId"
<Field label="所属部门名称" prop="deptName" v-model="form.deptName" placeholder="请输入所属部门名称"/> placeholder="请输入员工ID"
<Field label="职位ID" prop="positionId" v-model="form.positionId" placeholder="请输入职位ID"/> />
<Field label="职位名称" prop="positionName" v-model="form.positionName" placeholder="请输入职位名称"/> <Field
<Field label="所属考勤组ID" prop="attendanceGroupId" v-model="form.attendanceGroupId" placeholder="请输入所属考勤组ID"/> label="员工姓名"
<Field label="所属考勤组名称" prop="attendanceGroupName" v-model="form.attendanceGroupName" placeholder="请输入所属考勤组名称"/> prop="staffName"
<Field label="班次ID" prop="shiftsId" v-model="form.shiftsId" placeholder="请输入班次ID"/> v-model="form.staffName"
<Field label="班次名称" prop="shiftsName" v-model="form.shiftsName" placeholder="请输入班次名称"/> placeholder="请输入员工姓名"
<Field label="考勤日期" prop="attendanceDate" v-model="form.attendanceDate" type="date" /> />
<Field label="考勤点名称" prop="attendanceAddress" v-model="form.attendanceAddress" placeholder="请输入考勤点名称"/> <Field
<Field label="事件源" prop="eventSource" v-model="form.eventSource" placeholder="请输入事件源"/> label="工号"
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/> prop="workNum"
v-model="form.workNum"
placeholder="请输入工号"
/>
<Field
label="所属部门"
prop="deptId"
v-model="form.deptId"
placeholder="请输入所属部门"
/>
<Field
label="所属部门名称"
prop="deptName"
v-model="form.deptName"
placeholder="请输入所属部门名称"
/>
<Field
label="职位ID"
prop="positionId"
v-model="form.positionId"
placeholder="请输入职位ID"
/>
<Field
label="职位名称"
prop="positionName"
v-model="form.positionName"
placeholder="请输入职位名称"
/>
<Field
label="所属考勤组ID"
prop="attendanceGroupId"
v-model="form.attendanceGroupId"
placeholder="请输入所属考勤组ID"
/>
<Field
label="所属考勤组名称"
prop="attendanceGroupName"
v-model="form.attendanceGroupName"
placeholder="请输入所属考勤组名称"
/>
<Field
label="班次ID"
prop="shiftsId"
v-model="form.shiftsId"
placeholder="请输入班次ID"
/>
<Field
label="班次名称"
prop="shiftsName"
v-model="form.shiftsName"
placeholder="请输入班次名称"
/>
<Field
label="考勤日期"
prop="attendanceDate"
v-model="form.attendanceDate"
type="date"
/>
<Field
label="考勤点名称"
prop="attendanceAddress"
v-model="form.attendanceAddress"
placeholder="请输入考勤点名称"
/>
<Field
label="事件源"
prop="eventSource"
v-model="form.eventSource"
placeholder="请输入事件源"
/>
<Field
label="备注"
prop="remark"
v-model="form.remark"
type="textarea"
placeholder="请输入备注"
/>
</el-row> </el-row>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">确 定</el-button> <el-button
type="primary"
v-if="pageInfo.type !== 'view'"
@click="submitForm"
>确 定</el-button
>
<el-button @click="cancel">取 消</el-button> <el-button @click="cancel">取 消</el-button>
</div> </div>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import form from "@/assets/mixins/formdialog"; import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow"; import dialogShow from "./dialogshow";
export default { export default {
mixins: [form], mixins: [form],
components: { components: {
dialogShow , dialogShow,
}, },
data() { data() {
return { return {
...@@ -45,46 +124,43 @@ ...@@ -45,46 +124,43 @@
title: "海康考勤打卡记录汇总信息", title: "海康考勤打卡记录汇总信息",
// 是否显示弹出层 // 是否显示弹出层
open: false, open: false,
toString:[ toString: [],
],
// 表单校验 // 表单校验
rules: { rules: {
staffName: [ staffName: [
{required: true,message: "请输入员工姓名", trigger: "blur" }, { required: true, message: "请输入员工姓名", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",}, { max: 64, message: "最多只能录入64个字符", trigger: "blur" },
],
createTime: [
{required: true,message: "请选择创建时间" },
], ],
} createTime: [{ required: true, message: "请选择创建时间" }],
},
}; };
}, },
methods: { methods: {
/** 编辑 */ /** 编辑 */
edit(row) { edit(row) {
this.reset() this.reset();
this.query = { id: row.id }; this.query = { id: row.id };
this.urls.currUrl ="attendance/record/hik/edit"; this.urls.currUrl = "attendance/record/hik/edit";
this.getData(); this.getData();
this.pageInfo.type="edit" this.pageInfo.type = "edit";
this.title = "修改海康考勤打卡记录汇总信息"; this.title = "修改海康考勤打卡记录汇总信息";
}, },
/** 新增 */ /** 新增 */
add(row) { add(row) {
this.reset() this.reset();
this.urls.currUrl = "attendance/record/hik/add"; this.urls.currUrl = "attendance/record/hik/add";
this.getData(); this.getData();
this.pageInfo.type="add" this.pageInfo.type = "add";
this.title = "新增海康考勤打卡记录汇总信息"; this.title = "新增海康考勤打卡记录汇总信息";
}, },
/** 查看*/ /** 查看*/
view(row) { view(row) {
this.reset() this.reset();
this.query = { id: row.id }; this.query = { id: row.id };
this.urls.currUrl ="attendance/record/hik/view"; this.urls.currUrl = "attendance/record/hik/view";
this.getData(); this.getData();
this.pageInfo.type="view" this.pageInfo.type = "view";
this.title = "海康考勤打卡记录汇总信息详细"; this.title = "海康考勤打卡记录汇总信息详细";
}, },
/**取消按钮 */ /**取消按钮 */
...@@ -104,21 +180,21 @@ ...@@ -104,21 +180,21 @@
// 表单重置 // 表单重置
reset() { reset() {
this.form = { this.form = {
staffId : null, staffId: null,
staffName : "", staffName: "",
workNum : "", workNum: "",
deptId : null, deptId: null,
deptName : "", deptName: "",
positionId : null, positionId: null,
positionName : "", positionName: "",
attendanceGroupId : null, attendanceGroupId: null,
attendanceGroupName : "", attendanceGroupName: "",
shiftsId : null, shiftsId: null,
shiftsName : "", shiftsName: "",
attendanceDate : null, attendanceDate: null,
attendanceAddress : "", attendanceAddress: "",
eventSource : "", eventSource: "",
remark : "", remark: "",
}; };
this.resetForm("form"); this.resetForm("form");
}, },
...@@ -128,5 +204,5 @@ ...@@ -128,5 +204,5 @@
} }
}, },
}, },
}; };
</script> </script>
...@@ -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;
...@@ -16,4 +20,41 @@ import com.mortals.xhx.module.attendance.service.AttendanceVacationBalanceServic ...@@ -16,4 +20,41 @@ 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