Commit e73d4be8 authored by 王启林's avatar 王启林

合并

parents 08b2c6de f906d2fb
......@@ -113,8 +113,6 @@ export default {
},
},
mounted() {
console.log(this.tableData);
console.log(this.loading);
},
watch: {
tableData(val) {
......
......@@ -22,9 +22,11 @@
<span>&nbsp;</span>
<el-switch
v-if="switchBtn"
v-model="row.check"
@change="$emit('view', row)"
title="核查"
v-model="row.check"
:active-value="true"
:inactive-value="false"
></el-switch>
<span>&nbsp;</span>
<el-button
......
......@@ -7,7 +7,124 @@
:destroy-on-close="true"
size="50%"
>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form
ref="form"
class="dra_content"
:model="form"
:rules="rules"
label-width="120px"
>
<div class="box">
<div class="title">异常情况</div>
<div class="content">
<el-row>
<el-col :span="8"
>员工:{{ form.staffName ? form.staffName : "--" }}</el-col
>
<el-col :span="8"
>所属部门:{{ form.deptName ? form.deptName : "--" }}</el-col
>
<el-col :span="8"
>窗口编号:{{ form.windowNum ? form.windowNum : "--" }}</el-col
>
</el-row>
<el-row>
<el-col :span="8"
>考勤组:{{
form.attendanceGroupName ? form.attendanceGroupName : "--"
}}</el-col
>
<el-col :span="8"
>异常时间:{{ form.errorTime ? form.errorTime : "--" }}</el-col
>
<el-col :span="8"
>上下班时间:{{
form.goOffTimeStr ? form.goOffTimeStr : "--"
}}</el-col
>
</el-row>
<el-row>
<el-col :span="10"
>实际打卡时间:{{
form.actualAttendTime ? form.actualAttendTime : "--"
}}</el-col
>
<el-col :span="9"
>异常结果:{{ form.errorTime ? form.errorTime : "--" }}</el-col
>
<el-col :span="5"
>扣分方式:{{ form.subMethod ? form.subMethod : "--" }}</el-col
>
</el-row>
<el-row>
<el-col :span="8"
>扣分时间:{{ form.deductTime ? form.deductTime : "--" }}</el-col
>
<el-col :span="8"
>扣分人员:{{
form.deductPerson ? form.deductPerson : "--"
}}</el-col
>
</el-row>
</div>
</div>
<div class="box">
<div class="title">核查情况</div>
<div class="content">
<el-row>
<el-col :span="8"
>核查结果:{{
form.checkResult ? form.checkResult : "--"
}}</el-col
>
<el-col :span="8"
>绩效规则:{{ form.ruleName ? form.ruleName : "--" }}</el-col
>
<el-col :span="8"
>加分/扣除分值:{{ form.score ? form.score : "--" }}</el-col
>
</el-row>
<el-row>
<el-col :span="8"
>说明:{{ form.checkDesc ? form.checkDesc : "--" }}</el-col
>
<el-col :span="8"
>核查人员:{{
form.checkPerson ? form.checkPerson : "--"
}}</el-col
>
<el-col :span="8"
>核查时间:{{ form.checkTime ? form.checkTime : "--" }}</el-col
>
</el-row>
</div>
</div>
<div class="box">
<div class="title">申诉情况</div>
<div class="content">
<el-row>
<el-col :span="24"
>申诉说明:{{
form.appealDesc ? form.appealDesc : "--"
}}</el-col
>
<el-col :span="24"
>申诉时间:{{ form.appealTime ? form.appealTime : "--" }}</el-col
>
<el-col :span="24"
>申诉附件:{{ form.performAttendAppealFilesList ? form.performAttendAppealFilesList : "--" }}</el-col
>
</el-row>
</div>
</div>
<div class="box"></div>
<form-buttons
@submit="submitForm"
v-if="pageInfo.type != 'view'"
noCancelBtn
/>
</el-form>
<!-- <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field
label="核查记录Id"
......@@ -270,7 +387,7 @@
v-if="pageInfo.type != 'view'"
noCancelBtn
/>
</el-form>
</el-form> -->
</el-drawer>
</template>
......@@ -442,3 +559,51 @@ export default {
},
};
</script>
<style lang="less" scoped>
.dra_content {
width: 100%;
height: 100%;
padding: 20px;
.box {
width: 100%;
height: auto;
background: inherit;
background-color: rgba(242, 246, 252, 1);
border: none;
border-radius: 8px;
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
padding: 15px 0 0 15px;
.title {
color: #1890ff;
font-size: 16px;
padding-left: 10px;
position: relative;
margin-bottom: 30px;
&::after {
content: "";
display: block;
border-left: 3px solid #1890ff;
left: 0;
top: 0;
bottom: 0;
position: absolute;
}
}
.content {
width: 100%;
padding: 10px;
font-family: "微软雅黑", sans-serif;
font-weight: 400;
font-style: normal;
font-size: 14px;
margin-left: 0 auto;
margin-bottom: 30px;
/deep/.el-row {
margin-bottom: 20px;
}
}
}
}
</style>
<template>
<div class="page">
<el-tabs v-model="activeName">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="未处理" name="1">
<LayoutTable :data="tableData" notAdd notDel :config="tableConfig">
</LayoutTable>
......@@ -61,8 +61,25 @@ export default {
BarCharts,
},
mixins: [table],
created() { },
created() {
this.getData();
},
methods: {
handleClick() {
this.getData();
},
getData() {
this.activeName == 1 || this.activeName == 2
? this.$post("/perform/attend/appeal/list", {
processStatus: this.activeName,
}).then((res) => {
console.log(res);
if (res.code == 1) {
this.tableData = res.data;
}
})
: "";
},
renderTable(tableData) {
return (
<el-table stripe data={tableData} class="total-table">
......@@ -103,18 +120,41 @@ export default {
],
config: {
isshowTabPane: false,
search: [],
search: [
{
name: "irregularOtherType",
type: "select",
label: "全部类型",
fuzzy: false,
},
{
name: "deptId",
type: "select",
label: "全部部门",
fuzzy: false,
},
{
name: "date",
type: "date",
label: "请选择日期",
fuzzy: false,
},
{
name: "staffName",
type: "text",
label: "员工姓名搜索",
fuzzy: false,
},
],
columns: [
{ type: "selection", width: 60 },
{ type: "index", label: "序号", width: 50 },
{ label: "姓名", prop: "staffName" },
{ label: "窗口工号", prop: "workNum" },
{ label: "所属部门", prop: "deptName" },
{ label: "违规类型", prop: "ruleName" },
{ label: "违规类型", prop: "irregularOtherType" },
{ label: "绩效规则", prop: "ruleName" },
{ label: "扣分方式", prop: "subMethod", formatter: this.formatter },
......@@ -156,11 +196,12 @@ export default {
},*/
{
label: "操作",
width: 240,
formatter: (row) => {
return (
<table-buttons
noAdd
noDel
noEdit
row={row}
onEdit={this.toEdit}
onView={this.toView}
......
......@@ -66,6 +66,7 @@
notAdd
notDel
notSearch
notPagination
:config="tableConfig"
>
</LayoutTable>
......@@ -107,6 +108,7 @@
notAdd
notDel
notSearch
notPagination
:config="tableConfig"
>
</LayoutTable>
......@@ -148,6 +150,7 @@
notAdd
notDel
notSearch
notPagination
:config="tableConfig"
>
</LayoutTable>
......@@ -189,6 +192,7 @@
notAdd
notDel
notSearch
notPagination
:config="tableConfig"
>
</LayoutTable>
......@@ -230,6 +234,7 @@
notAdd
notDel
notSearch
notPagination
:config="tableConfig"
>
</LayoutTable>
......@@ -310,7 +315,7 @@ export default {
mixins: [form, table],
components: {},
created() {
this.changePath("perform/dept/conf");
this.changePath("perform//staff/conf");
// 获取部门列表
this.$post("/dept/list", { page: 1, size: -1 }).then((res) => {
if (res.code == 1) {
......@@ -319,6 +324,7 @@ export default {
this.deptArr = [];
}
});
this.checkArr = [];
// this.getKaoQin();
},
data() {
......@@ -333,30 +339,17 @@ export default {
direction: "rtl",
toString: [],
toDate: [],
tableData: [
{
core: "-0.5",
name: "迟到",
simple: "迟到5分钟以内(包含5分钟)",
check: false,
},
],
tableData: [],
// 表单校验
rules: {},
activeName: "1",
options: [
{
value: "1",
label: "工作纪律",
},
{
value: "2",
label: "工作效能",
},
],
options: [],
type: "",
keywords: "",
deptArr: [],
urls: {
saveUrl: "/perform/dept/conf/save",
},
config: {
isshowTabPane: false,
search: [],
......@@ -373,36 +366,39 @@ export default {
label: "操作",
width: 100,
formatter: (row) => {
return (
<table-buttons
noAdd
noView
noEdit
noDel
switchBtn
row={row}
onEdit={this.eddRules}
onDel={this.toDelRules}
onView={this.switchChange}
/>
);
if (row.check) {
return <span>不选择</span>;
} else {
return <span style="cursor:pointer">选择</span>;
}
},
},
],
},
cateObj: {},
dataArr: [],
checkArr: [],
};
},
// watch: {
// query: {
// deep,
// handler(val) {
// console.log(val);
// },
// },
// },
methods: {
handleRowClick(val) {
val.check = !val.check;
val.check
? this.checkArr.push(val)
: (this.checkArr = this.checkArr.filter((v) => v.id !== val.id));
this.checkArr.length > 0
? this.checkArr.forEach((val) => {
val.ruleId = val.id;
val.ruleName = val.name;
this.tableData.data.forEach((v) => {
val.id == v.id ? (v.check = val.check) : "";
});
})
: "";
this.form.deptConfDetail = this.checkArr;
this.tableData.data = [...this.tableData.data];
this.$forceUpdate(this.tableData.data);
},
typeSelect(val) {
this.getKaoQin(val);
},
......@@ -423,29 +419,56 @@ export default {
categoryId,
type: this.activeName,
page: this.query.page,
size: -1,
orderColList: this.typeArr,
name: this.searchValue,
}).then((res) => {
if (res.code == 1) {
this.tableData = res.data;
this.checkArr.length > 0
? this.checkArr.forEach((val) => {
this.tableData.data.forEach((v) => {
val.id == v.id ? (v.check = val.check) : "";
});
})
: this.tableData.data.forEach((v) => {
v.check = false;
});
this.tableData.data = [...this.tableData.data];
this.$forceUpdate(this.tableData);
} else {
this.tableData = {};
}
});
},
switchChange(val) {},
handleClick(val) {
this.getData();
this.cateObj = {};
this.type = "";
},
/** 编辑 */
edit(row) {
this.reset();
this.query = { id: row.id };
// this.urls.currUrl = "perform/dept/conf/edit";
this.checkArr = [];
this.type = "";
this.activeName = "1";
this.$get("/perform/dept/conf/info", { id: row.id }).then((res) => {
if (res.code == 1) {
this.form = res.data;
this.checkArr = res.data.deptConfDetail;
res.data.deptConfDetail.length > 0
? res.data.deptConfDetail.forEach((val) => {
val.check = true;
val.id = val.ruleId;
this.tableData.data.forEach((v) => {
v.check = false;
val.ruleId == v.id ? (v.check = true) : "";
});
})
: "";
this.tableData.data = [...this.tableData.data];
this.$forceUpdate(this.tableData);
} else {
this.form = {};
}
......@@ -459,14 +482,18 @@ export default {
/** 新增 */
add(row) {
this.reset();
// this.urls.currUrl = "perform/dept/conf/add";
this.getData();
this.open = true;
this.checkArr = [];
this.type = "";
this.activeName = "1";
this.pageInfo.type = "add";
this.title = "新增部门自动考核信息";
},
/** 查看*/
view(row) {
console.log(123);
return;
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "perform/dept/conf/view";
......
......@@ -17,7 +17,7 @@
<div class="goal_title">
<img src="../../../../assets/images/u17641.svg" alt="" />
<span>
{{ val.deptName ? val.deptName : "--" }}
{{ val.deptName ? val.deptName : val.staffNames }}
</span>
</div>
<p class="goal_txt">
......@@ -25,19 +25,19 @@
</p>
<p>
<el-tag style="margin: 0 5px 5px 0"
>考勤绩效指标/工作纪律{{ val.attendCount }}</el-tag
>考勤绩效指标:{{ val.attendCount }}</el-tag
>
<el-tag style="margin: 0 5px 5px 0"
>评价绩效指标/工作纪律{{ val.assessCount }}</el-tag
>评价绩效指标:{{ val.assessCount }}</el-tag
>
<el-tag style="margin: 0 5px 5px 0"
>办件绩效指标/工作效能{{ val.workCount }}</el-tag
>办件绩效指标:{{ val.workCount }}</el-tag
>
<el-tag style="margin: 0 5px 5px 0"
>效能绩效指标/工作纪律{{ val.effectCount }}</el-tag
>效能绩效指标:{{ val.effectCount }}</el-tag
>
<el-tag style="margin: 0 5px 5px 0"
>其他绩效指标/工作纪律{{ val.otherCount }}</el-tag
>其他绩效指标:{{ val.otherCount }}</el-tag
>
</p>
<p class="goal_txt">
......@@ -68,7 +68,7 @@
</el-tab-pane>
<el-tab-pane label="窗口负责人管理" name="2">
<div class="content">
<LayoutTable :data="tableData" notSearch :config="tableConfig">
<LayoutTable :data="tableData" notSearch notDel :config="tableConfig">
</LayoutTable>
</div>
</el-tab-pane>
......@@ -99,7 +99,6 @@ export default {
},
mixins: [table],
created() {
console.log(this.tableData);
sessionStorage.removeItem("type");
sessionStorage.setItem("type", this.type);
},
......@@ -168,6 +167,13 @@ export default {
})
: "";
},
// 窗口负责人删除方法
toDel(row) {
this.$get("/window/owner/delete", { id: row }).then((res) => {
this.$message.success(res.msg);
this.getData();
});
},
},
data() {
return {
......@@ -182,13 +188,11 @@ export default {
{ type: "selection", width: 60 },
{ type: "index", label: "序号", width: 50 },
{ label: "部门名称", prop: "deptName" },
{ label: "姓名", prop: "name" },
{ label: "负责人姓名", prop: "name" },
{ label: "工号", prop: "number" },
{ label: "所属部门", prop: "deptName" },
{ label: "电话号码", prop: "phone" },
{ label: "联系电话", prop: "phone" },
{
label: "负责窗口数量",
......@@ -197,10 +201,17 @@ export default {
},
{
label: "创建时间",
prop: "createTime",
label: "更新时间",
prop: "updateTime",
formatter: this.formatterDate,
},
{
label: "更新人员",
prop: "updateUserId",
formatter: this.formatter,
},
{
label: "操作",
width: 240,
......@@ -208,6 +219,7 @@ export default {
return (
<table-buttons
noAdd
noView
row={row}
onEdit={this.toEdit}
onView={this.toView}
......@@ -319,6 +331,9 @@ export default {
margin-right: 10px;
}
}
/deep/.el-tag {
width: 114px !important;
}
.goal_txt {
font-family: "微软雅黑", sans-serif;
font-weight: 400;
......
......@@ -23,18 +23,22 @@
<Field
label="联系电话:"
prop="phone"
maxLength="11"
v-model="form.phone"
placeholder="请输入联系电话"
/>
<el-col style="width: 100%;" :span="24">
<Field
label="选择部门:"
prop="deptId"
v-model="form.deptId"
placeholder="选择部门"
:enumData="deptGroup"
type="select"
/>
<el-col style="width: 100%;" :span="12">
<el-form-item label="选择部门">
<el-select v-model="form.deptId" style="width: 100%;">
<el-option
v-for="item in deptArr"
:key="item.id"
:label="item.deptName"
:value="item.id"
>
</el-option
></el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
......@@ -42,48 +46,33 @@
<div class="content_top">
<span>请选择窗口工作人员:</span>
<div class="search_box">
<el-select v-model="type" placeholder="请选择部门">
<el-select v-model="deptValue" style="width: 100%;">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
style="width: 200px;"
v-for="item in deptArr"
:key="item.id"
:label="item.deptName"
:value="item.id"
>
</el-option>
</el-select>
</el-option
></el-select>
<el-input
v-model="keywords"
placeholder="请输入姓名关键字搜索"
style="width: 200px;margin: 0 10px;"
></el-input>
<el-button type="primary"> 搜索 </el-button>
<el-button type="primary" @click="handleSearch"> 搜索 </el-button>
</div>
</div>
<div class="table_box">
<el-table
<LayoutTable
:data="tableData"
border
style="width: 100%"
height="520"
@selection-change="handleSelectionChange"
notAdd
notDel
notSearch
notPagination
:config="tableConfig"
>
<el-table-column type="selection" width="55"> </el-table-column>
<el-table-column type="index" label="序号" width="50">
</el-table-column>
<el-table-column prop="name" label="姓名" width="180">
</el-table-column>
<el-table-column prop="id" label="工号"> </el-table-column>
<el-table-column prop="deptaName" label="部门"> </el-table-column>
<el-table-column prop="zhiwei" label="职位"> </el-table-column>
<el-table-column prop="status" label="状态"> </el-table-column>
<el-table-column prop="phone" label="手机号"> </el-table-column>
<el-table-column fixed="right" label="操作" width="120">
<template slot-scope="scope">
<span>{{ scope.row.check ? "已选择" : "选择" }}</span>
</template>
</el-table-column>
</el-table>
</LayoutTable>
</div>
</div>
</el-row>
......@@ -143,12 +132,23 @@
<script>
import form from "@/assets/mixins/formdialog";
import table from "@/assets/mixins/table";
export default {
name: "WindowOwnerDetail",
mixins: [form],
mixins: [form, table],
components: {},
created() {
this.changePath("window/owner");
// 获取部门列表
this.$post("/dept/list", { page: 1, size: -1 }).then((res) => {
if (res.code == 1) {
this.deptArr = res.data.data;
} else {
this.deptArr = [];
}
});
// this.getData();
},
data() {
return {
......@@ -159,68 +159,144 @@ export default {
// 是否显示弹出层
open: false,
direction: "rtl",
deptValue: "",
toString: [],
toDate: [],
deptArr: [],
// 表单校验
rules: {},
deptGroup: { 1: "部门1", 2: "部门2", 3: "部门3", 4: "部门4", 5: "部门5" },
options: [
{
value: "1",
label: "部门1",
},
{
value: "2",
label: "部门2",
},
],
type: "",
keywords: "",
tableData: [
{
id: "123456",
name: "xxx",
deptName: "部门1",
zhiwei: "工作人员",
status: "正式",
phone: "130****8888",
check: false,
},
{
id: "123456",
name: "xxx",
deptName: "部门1",
zhiwei: "工作人员",
status: "正式",
phone: "130****8888",
check: false,
},
],
checkArr: [],
urls: {
saveUrl: "/window/owner/save",
},
config: {
isshowTabPane: false,
search: [],
columns: [
{ type: "index", label: "序号", width: 50 },
{ label: "姓名", prop: "name" },
{ label: "工号", prop: "workNum" },
{ label: "部门", prop: "deptName" },
{ label: "职位", prop: "positionName" },
{ label: "员工状态", prop: "status", formatter: this.formatter },
{ label: "手机号码", prop: "phoneNumber" },
{
label: "操作",
width: 100,
formatter: (row) => {
if (row.check) {
return <span>不选择</span>;
} else {
return <span style="cursor:pointer">选择</span>;
}
},
},
],
},
};
},
methods: {
handleSelectionChange(val) {
console.log(val);
this.tableData.forEach((v) => (v.check = false));
val.forEach((v) => {
v.check = true;
handleSearch() {
this.getData();
},
getData() {
this.$post("/staff/list", {
page: 1,
size: -1,
deptId: this.deptValue,
name: this.keywords,
}).then((res) => {
if (res.code == 1) {
this.tableData = res.data;
this.checkArr.length > 0
? this.checkArr.forEach((val) => {
this.tableData.data.forEach((v) => {
val.id == v.id ? (v.check = val.check) : "";
});
})
: this.tableData.data.forEach((v) => {
v.check = false;
});
this.tableData.data = [...this.tableData.data];
this.$forceUpdate(this.tableData);
} else {
this.deptArr = [];
}
});
},
handleRowClick(val) {
val.check = !val.check;
val.check
? this.checkArr.push(val)
: (this.checkArr = this.checkArr.filter((v) => v.id !== val.id));
this.checkArr.length > 0
? this.checkArr.forEach((val) => {
val.staffId = val.id;
this.tableData.data.forEach((v) => {
val.id == v.id ? (v.check = val.check) : "";
});
})
: "";
this.tableData.data = [...this.tableData.data];
this.form.windowOwnerDetailList = this.checkArr;
this.$forceUpdate(this.tableData.data);
},
/** 编辑 */
edit(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "window/owner/edit";
this.deptValue = "";
this.keywords = "";
this.checkArr = [];
this.$get("/window/owner/info", { id: row.id }).then((res) => {
if (res.code == 1) {
this.form = res.data;
this.checkArr = res.data.windowOwnerDetailList;
res.data.windowOwnerDetailList.length > 0
? res.data.windowOwnerDetailList.forEach((val) => {
val.check = true;
val.id = val.staffId;
this.tableData.data.forEach((v) => {
v.check = false;
val.staffId == v.id ? (v.check = true) : "";
});
})
: "";
this.tableData.data = [...this.tableData.data];
this.$forceUpdate(this.tableData);
} else {
this.form = {};
}
this.open = true;
});
this.getData();
// this.urls.currUrl = "window/owner/edit";
// this.getData();
this.pageInfo.type = "edit";
this.title = "修改窗口负责人";
},
/** 新增 */
add(row) {
this.reset();
this.urls.currUrl = "window/owner/add";
// this.urls.currUrl = "window/owner/add";
// this.getData();
this.deptValue = "";
this.checkArr = [];
this.keywords = "";
this.getData();
this.open = true;
this.pageInfo.type = "add";
this.title = "新增窗口负责人";
},
......@@ -228,8 +304,8 @@ export default {
view(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "window/owner/view";
this.getData();
// this.urls.currUrl = "window/owner/view";
// this.getData();
this.pageInfo.type = "view";
this.title = "窗口负责人详细";
},
......@@ -250,7 +326,7 @@ export default {
// 表单重置
reset() {
this.form = {
deptId: 0,
deptId: "",
deptName: "",
name: "",
number: "",
......@@ -275,7 +351,7 @@ export default {
padding: 0 20px;
.bottom_content {
width: 100%;
height: 600px;
height: 680px;
background-color: rgba(242, 246, 252, 1);
box-sizing: border-box;
border-width: 1px;
......
......@@ -21,26 +21,52 @@ export default {
},
styleObj: {
type: Object,
default: () => {},
default: () => { },
},
parameter: {
type: Object,
default: () => { }
}
},
data() {
return {};
return {
myChart: null
};
},
watch: {
title(val) {
console.log(val);
this.drawLine();
this.myChart && this.myChart.setOption({title:{text:val}})
},
parameter: {
handler: function (v) {
this.drawLine(v)
},
deep: true
}
},
mounted() {
this.drawLine();
},
methods: {
drawLine() {
drawLine(obj) {
if (obj && this.myChart) {
// 更新
this.myChart.setOption({
xAxis: {
data: obj.x
},
series: [
{
data: obj.y,
},
]
})
return
}
// 基于dom,初始化echarts实例
let myChart = this.$echarts.init(document.getElementById(this.id));
this.myChart = myChart
// 绘制图表
myChart.setOption({
title: {
......@@ -50,7 +76,7 @@ export default {
fontSize: this.legendName == "旷工率" ? 24 : 18,
},
},
color:'#6e98ed',
color: '#6e98ed',
legend: {
orient: "horizontal",
right: "50px",
......@@ -65,7 +91,7 @@ export default {
},
tooltip: {},
xAxis: {
data: ["部门1", "部门2", "部门3", "部门4", "部门5", "部门6"],
data: [],
},
grid: {
left: "5%",
......@@ -79,9 +105,9 @@ export default {
{
name: this.legendName,
type: "bar",
data: [5, 20, 36, 10, 10, 20],
data: [],
itemStyle: {
lineStyle: {
type: "dotted", //'dotted'虚线 'solid'实线
},
......
......@@ -23,23 +23,50 @@ export default {
type: Object,
default: () => {},
},
parameter: {
type: Object,
default: () => {}
}
},
data() {
return {};
return {
myChart: null
};
},
watch: {
title(val) {
console.log(val);
this.myChart && this.myChart.setOption({title:{text:val}})
},
parameter: {
handler: function (v) {
this.drawLine(v)
},
deep: true
}
},
mounted() {
this.drawLine();
},
methods: {
drawLine() {
drawLine(obj) {
if (obj && this.myChart) {
// 更新
this.myChart.setOption({
xAxis: {
data: obj.x
},
series: [
{
data: obj.y,
},
]
})
return
}
// 基于dom,初始化echarts实例
let myChart = this.$echarts.init(document.getElementById(this.id));
this.myChart = myChart
// 绘制图表
myChart.setOption({
title: { text: this.title },
......@@ -59,7 +86,7 @@ export default {
color:'#6e98ed',
xAxis: {
type: "category",
data: ["部门1", "部门2", "部门3", "部门4", "部门5", "部门6"],
data: [],
},
grid: {
left: "3%",
......@@ -72,7 +99,7 @@ export default {
{
name: this.legendName,
type: "line",
data: [10, 20, 30, 90, 100, 100, 120],
data: [],
smooth: true,
// itemStyle: {
// lineStyle: {
......
......@@ -23,23 +23,47 @@ export default {
type: Object,
default: () => {},
},
parameter: {
type: Array,
default: () => []
}
},
data() {
return {};
return {
myChart: null
};
},
watch: {
title(val) {
console.log(val);
this.myChart && this.myChart.setOption({title:{text:val}})
},
parameter: {
handler: function (v) {
this.drawLine(v)
},
deep: true
}
},
mounted() {
this.drawLine();
},
methods: {
drawLine() {
drawLine(obj) {
if (obj && this.myChart) {
// 更新
this.myChart.setOption({
series: [
{
data: obj,
},
]
})
return
}
// 基于dom,初始化echarts实例
let myChart = this.$echarts.init(document.getElementById(this.id));
this.myChart = myChart
// 绘制图表
myChart.setOption({
title: { text: this.title },
......@@ -70,13 +94,7 @@ export default {
name: this.legendName,
type: "pie",
radius: "65%",
data: [
{ value: 1048, name: "部门1" },
{ value: 735, name: "部门2" },
{ value: 580, name: "部门3" },
{ value: 484, name: "部门4" },
{ value: 300, name: "部门5" },
],
data: this.parameter,
emphasis: {
itemStyle: {
shadowBlur: 10,
......
......@@ -145,7 +145,14 @@
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dingtalk</artifactId>
<version>2.0.19</version>
<version>2.0.22</version>
</dependency>
<!--dingdingtalk service sdk-->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>alibaba-dingtalk-service-sdk</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
......
......@@ -6,11 +6,10 @@ import com.mortals.xhx.common.code.ProcessStatusEnum;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public abstract class BaseReq implements Serializable {
/**
* 当前页
*/
......@@ -21,4 +20,35 @@ public abstract class BaseReq implements Serializable {
private Integer size;
/**
* 工号
*/
private String workNum;
/**
* 标题
*/
private String title;
/**
* 扣分时间
*/
private Date happenTime;
/**
* 规则编码
*/
private String ruleCode;
private String phone;
/**
* 类型
*/
private String performType;
}
......@@ -2,19 +2,29 @@ package com.mortals.xhx.busiz.dingtalk.api;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.*;
import com.dingtalk.api.response.*;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.xhx.busiz.dingtalk.config.TalkConfiguration;
import com.mortals.xhx.busiz.dingtalk.req.DingTalkBaseReq;
import com.mortals.xhx.busiz.dingtalk.req.UserPageReq;
import com.mortals.xhx.busiz.req.MobileReq;
import com.mortals.xhx.busiz.req.ReviewSaveReq;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.pdu.ApiRespPdu;
import lombok.extern.apachecommons.CommonsLog;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import sun.security.krb5.internal.APOptions;
import java.util.List;
/**
* 钉钉相关外部接口
......@@ -28,6 +38,7 @@ public class TalkApiController {
@Autowired
private TalkConfiguration talkConfiguration;
private String dingToken;
/**
* 获取token
......@@ -35,35 +46,194 @@ public class TalkApiController {
* @return
*/
@PostMapping("/dingtalk/gettoken")
public Rest<String> getToken(@RequestBody DingTalkBaseReq dingTalkBaseReq) {
log.info("收到【getToken】请求【请求体】--> {}", JSON.toJSONString(dingTalkBaseReq));
@UnAuth
public ApiRespPdu<String> getToken() {
ApiRespPdu<String> apiRespPdu = new ApiRespPdu<>();
try {
// DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
// OapiGettokenRequest req = new OapiGettokenRequest();
// req.setHttpMethod("GET");
// OapiGettokenResponse rsp = client.execute(req);
/* DingTalkClient client = new DefaultDingTalkClient(talkConfiguration.getGetTokneUrl());
DingTalkClient client = new DefaultDingTalkClient(talkConfiguration.getGetTokneUrl());
OapiGettokenRequest req = new OapiGettokenRequest();
req.setAppkey(apiKey);
req.setAppsecret(appsecret);
req.setAppkey(talkConfiguration.getAppKey());
req.setAppsecret(talkConfiguration.getAppSecret());
req.setHttpMethod("GET");
OapiGettokenResponse rsp = client.execute(req);
log.info("gettoken rsp:" + rsp.getBody());
if (rsp.getErrcode() == 0) {
dingToken = rsp.getAccessToken();
apiRespPdu.setCode(0);
apiRespPdu.setData(rsp.getAccessToken());
apiRespPdu.setMsg(rsp.getMsg());
} else {
throw new AppException(String.format("errorCode:%s,errorMsg:%s", rsp.getErrcode(), rsp.getErrmsg()));
apiRespPdu.setCode(-1);
apiRespPdu.setData("");
apiRespPdu.setMsg(rsp.getMsg());
}
*/
} catch (Exception e) {
log.error("异常", e);
return Rest.fail(e.getMessage());
apiRespPdu.setCode(-1);
apiRespPdu.setData("");
apiRespPdu.setMsg(e.toString());
}
return apiRespPdu;
}
/**
* 获取部门列表
* @return
*/
@PostMapping("/dingtalk/getSubList")
@UnAuth
public ApiRespPdu<List<OapiV2DepartmentListsubResponse.DeptBaseResponse>> getSubList(){
ApiRespPdu<List<OapiV2DepartmentListsubResponse.DeptBaseResponse>> apiRespPdu = new ApiRespPdu<>();
try {
DingTalkClient client = new DefaultDingTalkClient(talkConfiguration.getGetSubList());
OapiV2DepartmentListsubRequest req = new OapiV2DepartmentListsubRequest();
if(dingToken == null){
dingToken = getToken().getData();
}
OapiV2DepartmentListsubResponse rsp = client.execute(req, dingToken);
if(rsp.getErrcode() == 0){
apiRespPdu.setCode(0);
apiRespPdu.setData(rsp.getResult());
apiRespPdu.setMsg(rsp.getMsg());
}else {
if(getToken().getCode() == 0){
getSubList();
}else {
apiRespPdu.setCode(-1);
apiRespPdu.setData(null);
apiRespPdu.setMsg("获取token失败");
}
}
} catch (Exception e) {
e.printStackTrace();
apiRespPdu.setCode(-1);
apiRespPdu.setData(null);
apiRespPdu.setMsg(e.toString());
}
return Rest.ok();
return apiRespPdu;
}
/**
* 根据部门id查询该部门下所有用户完整信息
* @return
*/
@PostMapping("/dingtalk/getUserList")
@UnAuth
public ApiRespPdu<OapiV2UserListResponse.PageResult> getUserList(@RequestBody UserPageReq res){
ApiRespPdu<OapiV2UserListResponse.PageResult> apiRespPdu = new ApiRespPdu<>();
try {
DingTalkClient client = new DefaultDingTalkClient(talkConfiguration.getGetuserlist());
OapiV2UserListRequest req = new OapiV2UserListRequest();
if(dingToken == null){
dingToken = getToken().getData();
}
req.setDeptId(res.getDeptid());
req.setCursor(res.getCursor());
req.setSize(res.getSize());
OapiV2UserListResponse rsp = client.execute(req, dingToken);
if(rsp.getErrcode() == 0){
apiRespPdu.setCode(0);
apiRespPdu.setData(rsp.getResult());
apiRespPdu.setMsg(rsp.getMsg());
}else {
if(getToken().getCode() == 0){
getUserList(res);
}else {
apiRespPdu.setCode(-1);
apiRespPdu.setData(null);
apiRespPdu.setMsg("获取token失败");
}
}
} catch (Exception e) {
e.printStackTrace();
apiRespPdu.setCode(-1);
apiRespPdu.setData(null);
apiRespPdu.setMsg(e.toString());
}
return apiRespPdu;
}
/**
* 根据手机号查询用户
* @return
*/
@GetMapping("/dingtalk/getByMobile")
@UnAuth
public ApiRespPdu<OapiV2UserGetResponse.UserGetResponse> getByMobile(@RequestBody MobileReq mobile){
ApiRespPdu<OapiV2UserGetResponse.UserGetResponse> apiRespPdu = new ApiRespPdu<>();
try {
DingTalkClient client = new DefaultDingTalkClient(talkConfiguration.getGetbymobile());
OapiV2UserGetbymobileRequest req = new OapiV2UserGetbymobileRequest();
if(dingToken == null){
dingToken = getToken().getData();
}
req.setMobile(mobile.getMobile());
OapiV2UserGetbymobileResponse rsp = client.execute(req, dingToken);
if(rsp.getErrcode() == 0){
//根据获取到的userid去获取用户详情
ApiRespPdu<OapiV2UserGetResponse.UserGetResponse> userRsp = getUserInfo(rsp.getResult().getUserid());
if(userRsp.getCode() == 0){
apiRespPdu.setCode(userRsp.getCode());
apiRespPdu.setData(userRsp.getData());
apiRespPdu.setMsg(userRsp.getMsg());
}else {
apiRespPdu.setCode(-1);
apiRespPdu.setData(null);
apiRespPdu.setMsg(userRsp.getMsg());
}
}else {
if(getToken().getCode() == 0){
getByMobile(mobile);
}else {
apiRespPdu.setCode(-1);
apiRespPdu.setData(null);
apiRespPdu.setMsg("获取token失败");
}
}
} catch (Exception e) {
e.printStackTrace();
apiRespPdu.setCode(-1);
apiRespPdu.setData(null);
apiRespPdu.setMsg(e.toString());
}
return apiRespPdu;
}
/**
* 根据userid查询用户详情
* @return
*/
@GetMapping("/dingtalk/getUserInfo")
@UnAuth
public ApiRespPdu<OapiV2UserGetResponse.UserGetResponse> getUserInfo(@RequestBody String userid){
ApiRespPdu<OapiV2UserGetResponse.UserGetResponse> apiRespPdu = new ApiRespPdu<>();
try {
DingTalkClient client = new DefaultDingTalkClient(talkConfiguration.getGetuserinfo());
OapiV2UserGetRequest req = new OapiV2UserGetRequest();
if(dingToken == null){
dingToken = getToken().getData();
}
req.setUserid(userid);
OapiV2UserGetResponse rsp = client.execute(req, dingToken);
apiRespPdu.setCode(0);
apiRespPdu.setData(rsp.getResult());
apiRespPdu.setMsg(rsp.getMsg());
} catch (Exception e) {
e.printStackTrace();
apiRespPdu.setCode(-1);
apiRespPdu.setData(null);
apiRespPdu.setMsg(e.toString());
}
return apiRespPdu;
}
}
......@@ -19,19 +19,47 @@ public class TalkConfiguration {
@Value("${dingtalk.agentId:''}")
private String getAgentId;
/**
* appKey
*/
@Value("${dingtalk.AppKey:''}")
private String AppKey;
/**
* AppSecret
*/
@Value("${dingtalk.AppSecret:''}")
private String AppSecret;
/**
* getToken
*/
@Value("${dingtalk.gettoken:''}")
@Value("${dingtalk.gettoken:https://oapi.dingtalk.com/gettoken}")
private String getTokneUrl;
/**
* getbymobile
* 获取部门列表
*/
@Value("${dingtalk.getbymobile:''}")
private String getbymobile;
@Value("${dingtalk.listsub:https://oapi.dingtalk.com/topapi/v2/department/listsub}")
private String getSubList;
/**
* 根据部门id获取用户详情列表
*/
@Value("${dingtalk.getUserList:https://oapi.dingtalk.com/topapi/v2/user/list}")
private String getuserlist;
/**
* 根据电话查询用户信息
*/
@Value("${dingtalk.getbymobile:https://oapi.dingtalk.com/topapi/v2/user/getbymobile}")
private String getbymobile;
/**
* 根据userid查询用户信息
*/
@Value("${dingtalk.getuserinfo:https://oapi.dingtalk.com/topapi/v2/user/get}")
private String getuserinfo;
/**
* getDeptbyUser
*/
......
package com.mortals.xhx.busiz.dingtalk.req;
/**
* @author ZYW
* @date 2023-07-12 11:38
*/
public class UserPageReq {
//部门id
private Long deptid;
//起始页码
private Long cursor;
//每页条数
private Long size;
public Long getDeptid() {
return deptid;
}
public void setDeptid(Long deptid) {
this.deptid = deptid;
}
public Long getCursor() {
return cursor;
}
public void setCursor(Long cursor) {
this.cursor = cursor;
}
public Long getSize() {
return size;
}
public void setSize(Long size) {
this.size = size;
}
}
package com.mortals.xhx.busiz.req;
import com.mortals.framework.annotation.Excel;
import com.mortals.xhx.busiz.BaseReq;
import com.mortals.xhx.module.perform.model.PerformAttendAppealFilesEntity;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Data
......@@ -20,16 +24,28 @@ public class AppealReq extends BaseReq {
private Integer appealResult;
private Integer processStatus;
/**
* 当前员工id
*/
private Long staffId;
/**
* 核查记录id
*/
private Long Id;
/**
* 申诉说明
*/
private String appealDesc;
/**
* 绩效记录申诉附件信息信息
*/
private List<PerformAttendAppealFilesEntity> performAttendAppealFilesList = new ArrayList<>();
;
}
package com.mortals.xhx.busiz.req;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.xhx.busiz.BaseReq;
import lombok.Data;
import java.util.Date;
@Data
public class AttendSaveReq extends BaseReq {
/**
* 所属考勤组ID
*/
private Long attendanceGroupId;
/**
* 所属考勤组名称
*/
private String attendanceGroupName;
/**
* 考勤时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date attendanceDate;
/**
* 异常时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date errorTime;
/**
* 上下班时间
*/
private String goOffTimeStr;
/**
* 实际打卡时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date actualAttendTime;
/**
* 异常处理结果
*/
private String errorResult;
/**
* 扩展字段
*/
private String ext;
}
package com.mortals.xhx.busiz.req;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.xhx.busiz.BaseReq;
import lombok.Data;
import java.util.Date;
@Data
public class ComplainSaveReq extends BaseReq {
/**
* 投诉标题
*/
private String complainTitle;
/**
* 投诉内容
*/
private String complainContent;
/**
* 投诉人真实姓名
*/
private String complainRealName;
/**
* 联系电话
*/
private String contact;
/**
* 投诉时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date complainTime;
/**
* 投诉来源
*/
private String complainSource;
/**
* 投诉设备
*/
private String complainDevice;
}
package com.mortals.xhx.busiz.req;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel;
import com.mortals.xhx.busiz.BaseReq;
import lombok.Data;
import java.util.Date;
@Data
public class EffectSaveReq extends BaseReq {
/**
* 违规类型(1.脱岗,2.离岗,3.玩手机,4.睡觉)
*/
private Integer irregularType;
/**
* 发生时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date happenTime;
/**
* 持续时间,秒
*/
private Integer duration;
/**
* 报警时间
*/
private Date alarmTime;
}
package com.mortals.xhx.busiz.req;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.xhx.busiz.BaseReq;
import com.mortals.xhx.module.feedback.model.FeedbackAnswerEntity;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class FeedbackSaveReq extends BaseReq {
private Long feedbackId;
/**
* 用户id号
*/
private Long staffId;
private List<FeedbackAnswerEntity> feedbackAnswerList;
}
package com.mortals.xhx.busiz.req;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.xhx.busiz.BaseReq;
import lombok.Data;
import java.util.Date;
@Data
public class GoWorkSaveReq extends BaseReq {
/**
* 办件编码
*/
private String goworkCode;
/**
* 办件所属部门
*/
private String goworkDepts;
/**
* 事项名称
*/
private String matterlName;
/**
* 办理时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date goworkTime;
/**
* 扩展字段
*/
private String ext;
}
package com.mortals.xhx.busiz.req;
/**
* @author ZYW
* @date 2023-07-12 13:47
*/
public class MobileReq {
String mobile;
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
}
package com.mortals.xhx.busiz.req;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.xhx.busiz.BaseReq;
import lombok.Data;
import java.util.Date;
@Data
public class OtherSaveReq extends BaseReq {
/**
* 违规类型(1.工作纪律)
*/
private Integer irregularOtherType;
/**
* 发生时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date happenTime;
/**
* 评分标准
*/
private String ruleDesc;
/**
* 扩展字段
*/
private String ext;
}
package com.mortals.xhx.busiz.req;
import com.mortals.framework.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.xhx.busiz.BaseReq;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class PerformSaveReq extends BaseReq {
/**
* 工号
*/
private String workNum;
/**
* 标题
*/
private String title;
/**
* 扣分时间
*/
private Date happenTime;
/**
* 规则编码
*/
private String ruleCode;
private String phone;
/**
* 类型
*/
private String performType;
public class ReviewSaveReq extends BaseReq {
/**
* 评价结果(1.非常不满意,2.差评)
......@@ -47,6 +17,7 @@ public class PerformSaveReq extends BaseReq {
/**
* 评价时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date reviewTime;
/**
* 评价来源(窗口评价系统,导视系统,自助服务系统,微官网,其它)
......@@ -57,4 +28,6 @@ public class PerformSaveReq extends BaseReq {
*/
private String reviewDevice;
}
package com.mortals.xhx.busiz.rsp;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class AppealDetailInfo {
/**
* id
*/
private Long id;
/**
* 记录ID
*/
private Long recordId;
/**
* 员工ID
*/
private Long staffId;
/**
* 员工姓名
*/
private String staffName;
/**
* 工号
*/
private String workNum;
/**
* 所属部门
*/
private Long deptId;
/**
* 所属部门名称
*/
private String deptName;
/**
* 所属考勤组ID
*/
private Long attendanceGroupId;
/**
* 所属考勤组名称
*/
private String attendanceGroupName;
/**
* 考勤时间
*/
private Date attendanceDate;
/**
* 绩效规则id
*/
private Long ruleId;
/**
* 规则名称
*/
private String ruleName;
/**
* 增减类型(1.增加,2.扣除)
*/
private Integer subAddType;
/**
* 扣分或增加分值
*/
private BigDecimal score;
/**
* 上下班时间
*/
private String goOffTimeStr;
/**
* 异常时间
*/
private Date errorTime;
/**
* 实际打卡时间
*/
private Date actualAttendTime;
/**
* 异常处理结果
*/
private String errorResult;
/**
* 核查人员
*/
private String checkPerson;
/**
* 核查时间
*/
private Date checkTime;
/**
* 核查说明
*/
private String checkDesc;
/**
* 核查结果
*/
private String checkResult;
/**
* 处理状态(1.未处理,2.已处理)
*/
private Integer checkStatus;
/**
* 扣分方式(1.系统自动,2.人工添加,3.大厅巡查)
*/
private Integer subMethod;
/**
* 说明
*/
private String remark;
/**
* 评价结果(1.非常不满意,2.差评)
*/
private Integer reviewResult;
/**
* 评价时间
*/
private Date reviewTime;
/**
* 评价来源(窗口评价系统,导视系统,自助服务系统,微官网,其它)
*/
private String reviewSource;
/**
* 评价设备
*/
private String reviewDevice;
/**
* 投诉标题
*/
private String complainTitle;
/**
* 投诉内容
*/
private String complainContent;
/**
* 投诉人真实姓名
*/
private String complainRealName;
/**
* 联系电话
*/
private String contact;
/**
* 投诉时间
*/
private Date complainTime;
/**
* 投诉来源
*/
private String complainSource;
/**
* 投诉设备
*/
private String complainDevice;
/**
* 办件编码
*/
private String goworkCode;
/**
* 办件所属部门
*/
private String goworkDepts;
/**
* 事项名称
*/
private String matterlName;
/**
* 办理时间
*/
private Date goworkTime;
/**
* 违规类型(1.脱岗,2.离岗,3.玩手机,4.睡觉)
*/
private Integer irregularType;
/**
* 发生时间
*/
private Date happenTime;
/**
* 持续时间,秒
*/
private Integer duration;
/**
* 报警时间
*/
private Date alarmTime;
/**
* 图片凭证地址
*/
private String snapPath;
/**
* 窗口编号
*/
private String windowNum;
/**
* 违规类型(1.工作纪律)
*/
private Integer irregularOtherType;
/**
* 附件名称,多个逗号分割
*/
private String fileNames;
/**
* 附件下载地址,多个逗号分割
*/
private String filePaths;
}
......@@ -119,6 +119,8 @@ public class PerformDetailInfo {
*/
private String filePaths;
/**
* 评价结果(1.非常不满意,2.差评)
*/
......
......@@ -60,5 +60,10 @@ public class PerformInfo {
*/
private String performType;
/**
* 申诉状态(0.未申诉,1.申诉中,2.申诉拒绝,3.申诉通过)
*/
private Integer appealStatus;
}
......@@ -80,8 +80,9 @@ public class ApiLoginController extends BaseJsonBodyController {
data.put("userType", userEntity.getUserType());
HashSet<Integer> set = new HashSet<>();
set.add(1);
set.add(0);
set.add(2);
set.add(3);
if (ObjectUtils.isEmpty(userEntity.getUserType()) || !set.contains(userEntity.getUserType())) {
throw new AppException("当前用户不支持H5登录!");
......@@ -89,7 +90,7 @@ public class ApiLoginController extends BaseJsonBodyController {
userEntity.setLoginTime(System.currentTimeMillis());
userEntity.setToken(IdUtil.fastSimpleUUID());
userEntity.setExpireTime(DateUtils.addCurrDate(7).getTime());
userEntity.setExpireTime(DateUtils.addCurrDate(3).getTime());
String token = authTokenService.createToken(userEntity);
data.put("token", token);
ret.put(KEY_RESULT_DATA, data);
......
......@@ -10,14 +10,11 @@ import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result;
import com.mortals.framework.web.BaseJsonBodyController;
import com.mortals.xhx.busiz.req.AppealReq;
import com.mortals.xhx.busiz.req.PerformReq;
import com.mortals.xhx.busiz.rsp.AppealStatInfo;
import com.mortals.xhx.busiz.rsp.PerformDetailInfo;
import com.mortals.xhx.busiz.rsp.PerformInfo;
import com.mortals.xhx.busiz.rsp.PerformStatInfo;
import com.mortals.xhx.common.code.PerformTypeEnum;
import com.mortals.xhx.common.code.ProcessStatusEnum;
import com.mortals.xhx.common.utils.BeanUtil;
import com.mortals.xhx.module.check.model.*;
import com.mortals.xhx.module.check.service.*;
......@@ -25,7 +22,6 @@ import com.mortals.xhx.module.perform.model.PerformAttendAppealEntity;
import com.mortals.xhx.module.perform.model.PerformAttendAppealQuery;
import com.mortals.xhx.module.perform.service.PerformAttendAppealService;
import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
......@@ -36,9 +32,7 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.mortals.framework.ap.SysConstains.*;
import static com.mortals.xhx.common.key.ErrorCode.ERROR_TOKEN_EXPIRED;
......@@ -56,7 +50,22 @@ import static com.mortals.xhx.common.key.ErrorCode.ERROR_TOKEN_EXPIRED_CONTENT;
public class AppealApiController extends AbstractBaseController<PerformReq> {
@Autowired
private PerformAttendAppealService attendAppealService;
private CheckAttendRecordService checkAttendRecordService;
@Autowired
private CheckReviewRecordService checkReviewRecordService;
@Autowired
private CheckComplainRecordService checkComplainRecordService;
@Autowired
private CheckEffectRecordService checkEffectRecordService;
@Autowired
private CheckGoworkRecordService checkGoworkRecordService;
@Autowired
private CheckOtherRecordService checkOtherRecordService;
@Autowired
private PerformAttendAppealService appealService;
/**
* 个人申诉绩效统计
......@@ -105,6 +114,10 @@ public class AppealApiController extends AbstractBaseController<PerformReq> {
//未设置时间的情况,默认为当月
appealReq.setApperalStartDate(DateUtil.beginOfMonth(new Date()).toDateStr());
appealReq.setAppealEndDate(DateUtil.today());
}else{
//格式化到指定日期的当月
appealReq.setApperalStartDate(DateUtil.beginOfMonth(DateUtil.parse(appealReq.getApperalStartDate()).toJdkDate()).toDateStr());
appealReq.setAppealEndDate(DateUtil.endOfMonth(DateUtil.parse(appealReq.getApperalStartDate()).toJdkDate()).toDateStr());
}
PageInfo pageInfo = buildPageInfo(appealReq);
PerformAttendAppealQuery query = new PerformAttendAppealQuery();
......@@ -112,7 +125,7 @@ public class AppealApiController extends AbstractBaseController<PerformReq> {
query.setAppealTimeEnd(appealReq.getAppealEndDate());
query.setStaffId(context.getUser().getCustomerId());
Result<PerformAttendAppealEntity> result = attendAppealService.find(query, pageInfo, context);
Result<PerformAttendAppealEntity> result = appealService.find(query, pageInfo, context);
model.put(KEY_RESULT_DATA, result.getList());
model.put(PAGEINFO_KEY, result.getPageInfo());
parsePageInfo(model, result.getPageInfo());
......@@ -139,7 +152,7 @@ public class AppealApiController extends AbstractBaseController<PerformReq> {
if (ObjectUtils.isEmpty(appealReq.getId())) {
throw new AppException("详细查询id不能为空!");
}
PerformAttendAppealEntity performAttendAppealEntity = attendAppealService.get(appealReq.getId(), context);
PerformAttendAppealEntity performAttendAppealEntity = appealService.get(appealReq.getId(), context);
rest.setData(performAttendAppealEntity);
recordSysLog(request, busiDesc + " 【成功】");
......@@ -155,21 +168,62 @@ public class AppealApiController extends AbstractBaseController<PerformReq> {
* 申诉新增
*/
@PostMapping(value = "save")
public Rest<PerformAttendAppealEntity> appealSave(@RequestBody PerformAttendAppealEntity appealEntity) {
public Rest<PerformAttendAppealEntity> appealSave(@RequestBody AppealReq req) {
String busiDesc = "个人申诉新增";
log.info("【{}】【请求体】--> {}", busiDesc, JSONObject.toJSONString(appealEntity));
log.info("【{}】【请求体】--> {}", busiDesc, JSONObject.toJSONString(req));
Rest<PerformAttendAppealEntity> rest = Rest.ok(busiDesc + " 【成功】");
Context context = this.getContext();
try {
//校验 去重
PerformAttendAppealEntity saveEntity = attendAppealService.save(appealEntity, context);
//根据状态 查询 当前是否已经存在正在进行的申诉
if (ObjectUtils.isEmpty(req.getId())) throw new AppException("核查记录Id不能为空!");
if (ObjectUtils.isEmpty(req.getPerformType())) throw new AppException("绩效类型不能为空!");
//查询当前核查是否已存在进行中的申诉记录
PerformAttendAppealEntity appealEntity = appealService.selectOne(new PerformAttendAppealQuery().checkRecordId(req.getId()));
if (!ObjectUtils.isEmpty(appealEntity) && appealEntity.getProcessStatus() == ProcessStatusEnum.未处理.getValue()) {
throw new AppException("当前绩效核查已经存在正在进行中的申诉记录!");
}
PerformAttendAppealEntity entity = new PerformAttendAppealEntity();
entity.initAttrValue();
if (PerformTypeEnum.考勤绩效.getValue().equals(req.getPerformType())) {
CheckAttendRecordEntity checkEntity = checkAttendRecordService.get(req.getId(), context);
BeanUtils.copyProperties(checkEntity, entity, BeanUtil.getNullPropertyNames(checkEntity));
} else if (PerformTypeEnum.评价差评绩效.getValue().equals(req.getPerformType())) {
CheckReviewRecordEntity checkEntity = checkReviewRecordService.get(req.getId(), context);
BeanUtils.copyProperties(checkEntity, entity, BeanUtil.getNullPropertyNames(checkEntity));
} else if (PerformTypeEnum.评价投诉绩效.getValue().equals(req.getPerformType())) {
CheckComplainRecordEntity checkEntity = checkComplainRecordService.get(req.getId(), context);
BeanUtils.copyProperties(checkEntity, entity, BeanUtil.getNullPropertyNames(checkEntity));
} else if (PerformTypeEnum.办件绩效.getValue().equals(req.getPerformType())) {
CheckGoworkRecordEntity checkEntity = checkGoworkRecordService.get(req.getId(), context);
BeanUtils.copyProperties(checkEntity, entity, BeanUtil.getNullPropertyNames(checkEntity));
} else if (PerformTypeEnum.效能绩效.getValue().equals(req.getPerformType())) {
CheckEffectRecordEntity checkEntity = checkEffectRecordService.get(req.getId(), context);
BeanUtils.copyProperties(checkEntity, entity, BeanUtil.getNullPropertyNames(checkEntity));
} else if (PerformTypeEnum.其它绩效.getValue().equals(req.getPerformType())) {
CheckOtherRecordEntity checkEntity = checkOtherRecordService.get(req.getId(), context);
BeanUtils.copyProperties(checkEntity, entity, BeanUtil.getNullPropertyNames(checkEntity));
} else {
throw new AppException("不支持当前绩效类型");
}
entity.setPerformType(req.getPerformType());
entity.setPerformAttendAppealFilesList(req.getPerformAttendAppealFilesList());
entity.setProcessStatus(1);
entity.setAppealDesc(req.getAppealDesc());
PerformAttendAppealEntity saveEntity = appealService.save(entity, context);
rest.setData(saveEntity);
recordSysLog(request, busiDesc + " 【成功】");
} catch (Exception e) {
log.error(busiDesc, e);
rest = Rest.fail(super.convertException(e));
}
log.info("【{}】【响应体】--> {}", busiDesc, JSONObject.toJSONString(appealEntity));
log.info("【{}】【响应体】--> {}", busiDesc, JSONObject.toJSONString(req));
return rest;
}
......
......@@ -7,19 +7,13 @@ import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result;
import com.mortals.framework.web.BaseJsonBodyController;
import com.mortals.xhx.busiz.req.AppealReq;
import com.mortals.xhx.busiz.req.FeedbackReq;
import com.mortals.xhx.busiz.req.PerformReq;
import com.mortals.xhx.busiz.rsp.AppealStatInfo;
import com.mortals.xhx.busiz.req.FeedbackSaveReq;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.module.check.service.*;
import com.mortals.xhx.module.feedback.model.FeedbackEntity;
import com.mortals.xhx.module.feedback.model.FeedbackStaffEntity;
import com.mortals.xhx.module.feedback.model.*;
import com.mortals.xhx.module.feedback.service.FeedbackAnswerService;
import com.mortals.xhx.module.feedback.service.FeedbackService;
import com.mortals.xhx.module.perform.model.PerformAttendAppealEntity;
import com.mortals.xhx.module.perform.model.PerformAttendAppealQuery;
import com.mortals.xhx.module.feedback.service.FeedbackStaffService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
......@@ -32,6 +26,7 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.mortals.framework.ap.SysConstains.*;
import static com.mortals.xhx.common.key.ErrorCode.ERROR_TOKEN_EXPIRED;
......@@ -50,6 +45,10 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> {
@Autowired
private FeedbackService feedbackService;
@Autowired
private FeedbackStaffService feedbackStaffService;
@Autowired
private FeedbackAnswerService answerService;
/**
* 反馈列表
......@@ -70,20 +69,41 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> {
//未设置时间的情况,默认为当月
feedbackReq.setFeedBackStartDate(DateUtil.beginOfMonth(new Date()).toDateStr());
feedbackReq.setFeedBackEndDate(DateUtil.today());
} else {
//格式化到指定日期的当月
feedbackReq.setFeedBackStartDate(DateUtil.beginOfMonth(DateUtil.parse(feedbackReq.getFeedBackStartDate()).toJdkDate()).toDateStr());
feedbackReq.setFeedBackEndDate(DateUtil.endOfMonth(DateUtil.parse(feedbackReq.getFeedBackStartDate()).toJdkDate()).toDateStr());
}
PageInfo pageInfo = buildPageInfo(feedbackReq);
//PageInfo pageInfo = buildPageInfo(feedbackReq);
//todo
PageInfo pageAllInfo = new PageInfo();
if (YesNoEnum.YES.getValue() == feedbackReq.getFeedbackStatus()) {
//已反馈
//查询我已经回答过的
List<Long> feedbackIdList = answerService.find(new FeedbackAnswerQuery().staffId(context.getUser().getCustomerId())).stream().map(i -> i.getFeedbackId()).distinct().collect(Collectors.toList());
FeedbackQuery feedbackQuery = new FeedbackQuery();
feedbackQuery.setIdList(feedbackIdList);
List<FeedbackEntity> feedbackEntities = feedbackService.find(feedbackQuery);
model.put(KEY_RESULT_DATA, feedbackEntities);
pageAllInfo.setTotalResult(feedbackEntities.size());
} else {
//未反馈
}
//查询我的反馈 但是还未回答的
List<Long> feedbackIdList = answerService.find(new FeedbackAnswerQuery().staffId(context.getUser().getCustomerId())).stream().map(i -> i.getFeedbackId()).distinct().collect(Collectors.toList());
FeedbackStaffQuery feedbackStaffQuery = new FeedbackStaffQuery();
feedbackStaffQuery.setFeedbackIdNotList(feedbackIdList);
feedbackStaffQuery.setStaffId(context.getUser().getCustomerId());
List<Long> unfinFeedbackList = feedbackStaffService.find(feedbackStaffQuery).stream().map(i -> i.getFeedbackId()).distinct().collect(Collectors.toList());
model.put(KEY_RESULT_DATA, unfinFeedbackList);
pageAllInfo.setTotalResult(unfinFeedbackList.size());
}
// model.put(KEY_RESULT_DATA, result.getList());
// model.put(PAGEINFO_KEY, result.getPageInfo());
// parsePageInfo(model, result.getPageInfo());
pageAllInfo.setCurrPage(1);
pageAllInfo.setPrePageResult(-1);
model.put(PAGEINFO_KEY, pageAllInfo);
parsePageInfo(model, pageAllInfo);
recordSysLog(request, busiDesc + " 【成功】");
} catch (Exception e) {
......@@ -97,19 +117,40 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> {
* 反馈问卷新增
*/
@PostMapping(value = "save")
public Rest<FeedbackEntity> feedbackSave(@RequestBody FeedbackEntity feedbackEntity) {
public Rest<FeedbackEntity> feedbackAnswerSave(@RequestBody FeedbackSaveReq req) {
Context context = this.getContext();
String busiDesc = "反馈回答";
Rest<FeedbackEntity> rest = Rest.ok(busiDesc + " 【成功】");
if (ObjectUtils.isEmpty(context) || ObjectUtils.isEmpty(context.getUser())) {
throw new AppException(ERROR_TOKEN_EXPIRED, ERROR_TOKEN_EXPIRED_CONTENT);
}
try {
//todo
if (ObjectUtils.isEmpty(context) || ObjectUtils.isEmpty(context.getUser())) {
throw new AppException(ERROR_TOKEN_EXPIRED, ERROR_TOKEN_EXPIRED_CONTENT);
}
if (ObjectUtils.isEmpty(req.getFeedbackId())) throw new AppException("反馈信息ID不能为空!");
//如果时间已经结束 则不能再提交
FeedbackEntity feedbackEntity = feedbackService.get(req.getFeedbackId(), context);
if (DateUtil.compare(new Date(), feedbackEntity.getFeedbackTimeStart()) < 0)
throw new AppException("当前反馈问卷信息还未开始!");
if (DateUtil.compare(new Date(), feedbackEntity.getFeedbackTimeEnd()) > 0)
throw new AppException("当前反馈问卷信息已经过了截止日期!");
//判断是否已经回答过,已经回答了的 不重复提交
int count = answerService.count(new FeedbackAnswerQuery().feedbackId(req.getFeedbackId()).staffId(context.getUser().getCustomerId()), context);
if (count > 0) throw new AppException("该问卷反馈已经提交过,不能重复提交!");
//添加问答
List<FeedbackAnswerEntity> feedbackAnswerList = req.getFeedbackAnswerList();
for (FeedbackAnswerEntity feedbackAnswerEntity : feedbackAnswerList) {
feedbackAnswerEntity.setCreateUserId(context.getUser().getId());
feedbackAnswerEntity.setCreateTime(new Date());
List<FeedbackAnswerOptionEntity> feedbackAnswerOptionList = feedbackAnswerEntity.getFeedbackAnswerOptionList();
for (FeedbackAnswerOptionEntity feedbackAnswerOptionEntity : feedbackAnswerOptionList) {
feedbackAnswerOptionEntity.setCreateUserId(context.getUser().getId());
feedbackAnswerOptionEntity.setCreateTime(new Date());
}
}
answerService.save(feedbackAnswerList, context);
FeedbackEntity saveEntity = feedbackService.save(feedbackEntity, context);
rest.setData(saveEntity);
recordSysLog(request, busiDesc + " 【成功】");
} catch (Exception e) {
log.error(busiDesc, e);
......
......@@ -34,8 +34,7 @@ public class TestController {
public String idGens() {
log.info("测试id生成");
String stringId = idgeneratorService.getLongId(IdgeneratorServiceImpl.IdGeneratorKey.EFFECT).toString();
String stringId = idgeneratorService.getLongId(IdgeneratorServiceImpl.IdGeneratorKey.EFFECT_KEY).toString();
return stringId;
}
......
package com.mortals.xhx.common.code;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* 申诉状态(0.未申诉,1.申诉中,2.申诉拒绝,3.申诉通过)
*
* @author zxfei
*/
public enum AppealStatusEnum {
未申诉(0, "未申诉"),
申诉中(1, "申诉中"),
申诉拒绝(2, "申诉拒绝"),
申诉通过(3, "申诉通过");
private Integer value;
private String desc;
AppealStatusEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
public Integer getValue() {
return this.value;
}
public String getDesc() {
return this.desc;
}
public static AppealStatusEnum getByValue(Integer value) {
for (AppealStatusEnum deviceStatusEnum : AppealStatusEnum.values()) {
if (deviceStatusEnum.getValue() == value) {
return deviceStatusEnum;
}
}
return null;
}
/**
* 获取Map集合
*
* @param eItem 不包含项
* @return
*/
public static Map<String, String> getEnumMap(Integer... eItem) {
Map<String, String> resultMap = new LinkedHashMap<>();
for (AppealStatusEnum item : AppealStatusEnum.values()) {
try {
boolean hasE = false;
for (Integer e : eItem) {
if (item.getValue() == e) {
hasE = true;
break;
}
}
if (!hasE) {
resultMap.put(item.getValue() + "", item.getDesc());
}
} catch (Exception ex) {
}
}
return resultMap;
}
}
\ No newline at end of file
......@@ -8,11 +8,10 @@ import java.util.Map;
*/
public enum CheckTypeEnum {
考勤绩效(1, "考勤绩效"),
效能绩效(2, "效能绩效"),
评价绩效(3, "评价绩效"),
办件绩效(4, "办件绩效"),
差评绩效(5, "差评绩效"),
其它绩效(6, "其它绩效"),
评价绩效(2, "评价绩效"),
办件绩效(3, "办件绩效"),
效能绩效(4, "效能绩效"),
其它绩效(5, "其它绩效"),
;
private Integer value;
private String desc;
......
......@@ -4,13 +4,13 @@ import java.util.LinkedHashMap;
import java.util.Map;
/**
* 处理状态(1.未核查,2.已核查)枚举类
* 处理状态(1.未处理,2.已处理)枚举类
*
* @author zxfei
*/
public enum ProcessStatusEnum {
核查(1, "未核查"),
核查(2, "已核查");
处理(1, "未处理"),
处理(2, "已处理");
private Integer value;
private String desc;
......
......@@ -4,13 +4,14 @@ import java.util.LinkedHashMap;
import java.util.Map;
/**
* 扣分方式(1.系统自动,2.人工添加)枚举类
* 扣分方式(1.系统自动,2.人工添加,3.大厅巡查)枚举类
*
* @author zxfei
*/
public enum SubMethodEnum {
系统自动(1, "系统自动"),
人工添加(2, "人工添加");
人工添加(2, "人工添加"),
大厅巡查(3, "大厅巡查");
private Integer value;
private String desc;
......
......@@ -11,7 +11,8 @@ import java.util.Map;
public enum UserType {
SYSTEM(0, "系统用户"),
WORK(1, "后台管理"),
WORK_PERSON(2, "工作人员");
WORK_PERSON(2, "工作人员"),
INSPECT_PERSON(3, "巡查人员");;
private int value;
private String desc;
......
......@@ -2,6 +2,9 @@ package com.mortals.xhx.module.check.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.check.model.CheckAttendRecordEntity;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryQuery;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryVo;
import java.util.List;
/**
* 考勤绩效记录核查信息Dao
......@@ -13,5 +16,10 @@ import java.util.List;
public interface CheckAttendRecordDao extends ICRUDDao<CheckAttendRecordEntity,Long>{
/**
* 汇总已审核的核查记录
* @param query
* @return
*/
List<StaffCheckSummaryVo> summaryCheck(StaffCheckSummaryQuery query);
}
......@@ -2,6 +2,9 @@ package com.mortals.xhx.module.check.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.check.model.CheckComplainRecordEntity;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryQuery;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryVo;
import java.util.List;
/**
* 评价绩效投诉核查信息Dao
......@@ -13,5 +16,10 @@ import java.util.List;
public interface CheckComplainRecordDao extends ICRUDDao<CheckComplainRecordEntity,Long>{
/**
* 汇总已审核的核查记录
* @param query
* @return
*/
List<StaffCheckSummaryVo> summaryCheck(StaffCheckSummaryQuery query);
}
......@@ -2,6 +2,9 @@ package com.mortals.xhx.module.check.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.check.model.CheckEffectRecordEntity;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryQuery;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryVo;
import java.util.List;
/**
* 效能绩效核查信息Dao
......@@ -13,5 +16,10 @@ import java.util.List;
public interface CheckEffectRecordDao extends ICRUDDao<CheckEffectRecordEntity,Long>{
/**
* 汇总已审核的核查记录
* @param query
* @return
*/
List<StaffCheckSummaryVo> summaryCheck(StaffCheckSummaryQuery query);
}
......@@ -2,6 +2,9 @@ package com.mortals.xhx.module.check.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.check.model.CheckGoworkRecordEntity;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryQuery;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryVo;
import java.util.List;
/**
* 办件绩效核查信息Dao
......@@ -13,5 +16,10 @@ import java.util.List;
public interface CheckGoworkRecordDao extends ICRUDDao<CheckGoworkRecordEntity,Long>{
/**
* 汇总已审核的核查记录
* @param query
* @return
*/
List<StaffCheckSummaryVo> summaryCheck(StaffCheckSummaryQuery query);
}
......@@ -2,6 +2,9 @@ package com.mortals.xhx.module.check.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.check.model.CheckOtherRecordEntity;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryQuery;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryVo;
import java.util.List;
/**
* 其它绩效核查信息Dao
......@@ -13,5 +16,10 @@ import java.util.List;
public interface CheckOtherRecordDao extends ICRUDDao<CheckOtherRecordEntity,Long>{
/**
* 汇总已审核的核查记录
* @param query
* @return
*/
List<StaffCheckSummaryVo> summaryCheck(StaffCheckSummaryQuery query);
}
......@@ -2,6 +2,9 @@ package com.mortals.xhx.module.check.dao;
import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.check.model.CheckReviewRecordEntity;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryQuery;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryVo;
import java.util.List;
/**
* 评价差评绩效核查信息Dao
......@@ -13,5 +16,10 @@ import java.util.List;
public interface CheckReviewRecordDao extends ICRUDDao<CheckReviewRecordEntity,Long>{
/**
* 汇总已审核的核查记录
* @param query
* @return
*/
List<StaffCheckSummaryVo> summaryCheck(StaffCheckSummaryQuery query);
}
package com.mortals.xhx.module.check.dao.ibatis;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryQuery;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryVo;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.check.dao.CheckAttendRecordDao;
import com.mortals.xhx.module.check.model.CheckAttendRecordEntity;
......@@ -17,5 +19,8 @@ import java.util.List;
public class CheckAttendRecordDaoImpl extends BaseCRUDDaoMybatis<CheckAttendRecordEntity,Long> implements CheckAttendRecordDao {
@Override
public List<StaffCheckSummaryVo> summaryCheck(StaffCheckSummaryQuery query) {
return this.getSqlSession().selectList(this.getSqlId("getSummaryCheckList"), query);
}
}
package com.mortals.xhx.module.check.dao.ibatis;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryQuery;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryVo;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.check.dao.CheckComplainRecordDao;
import com.mortals.xhx.module.check.model.CheckComplainRecordEntity;
......@@ -17,5 +19,8 @@ import java.util.List;
public class CheckComplainRecordDaoImpl extends BaseCRUDDaoMybatis<CheckComplainRecordEntity,Long> implements CheckComplainRecordDao {
@Override
public List<StaffCheckSummaryVo> summaryCheck(StaffCheckSummaryQuery query) {
return this.getSqlSession().selectList(this.getSqlId("getSummaryCheckList"), query);
}
}
package com.mortals.xhx.module.check.dao.ibatis;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryQuery;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryVo;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.check.dao.CheckEffectRecordDao;
import com.mortals.xhx.module.check.model.CheckEffectRecordEntity;
......@@ -17,5 +19,8 @@ import java.util.List;
public class CheckEffectRecordDaoImpl extends BaseCRUDDaoMybatis<CheckEffectRecordEntity,Long> implements CheckEffectRecordDao {
@Override
public List<StaffCheckSummaryVo> summaryCheck(StaffCheckSummaryQuery query) {
return this.getSqlSession().selectList(this.getSqlId("getSummaryCheckList"), query);
}
}
package com.mortals.xhx.module.check.dao.ibatis;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryQuery;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryVo;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.check.dao.CheckGoworkRecordDao;
import com.mortals.xhx.module.check.model.CheckGoworkRecordEntity;
......@@ -17,5 +19,8 @@ import java.util.List;
public class CheckGoworkRecordDaoImpl extends BaseCRUDDaoMybatis<CheckGoworkRecordEntity,Long> implements CheckGoworkRecordDao {
@Override
public List<StaffCheckSummaryVo> summaryCheck(StaffCheckSummaryQuery query) {
return this.getSqlSession().selectList(this.getSqlId("getSummaryCheckList"), query);
}
}
package com.mortals.xhx.module.check.dao.ibatis;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryQuery;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryVo;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.check.dao.CheckOtherRecordDao;
import com.mortals.xhx.module.check.model.CheckOtherRecordEntity;
......@@ -17,5 +19,8 @@ import java.util.List;
public class CheckOtherRecordDaoImpl extends BaseCRUDDaoMybatis<CheckOtherRecordEntity,Long> implements CheckOtherRecordDao {
@Override
public List<StaffCheckSummaryVo> summaryCheck(StaffCheckSummaryQuery query) {
return this.getSqlSession().selectList(this.getSqlId("getSummaryCheckList"), query);
}
}
package com.mortals.xhx.module.check.dao.ibatis;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryQuery;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryVo;
import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.check.dao.CheckReviewRecordDao;
import com.mortals.xhx.module.check.model.CheckReviewRecordEntity;
......@@ -17,5 +19,8 @@ import java.util.List;
public class CheckReviewRecordDaoImpl extends BaseCRUDDaoMybatis<CheckReviewRecordEntity,Long> implements CheckReviewRecordDao {
@Override
public List<StaffCheckSummaryVo> summaryCheck(StaffCheckSummaryQuery query) {
return this.getSqlSession().selectList(this.getSqlId("getSummaryCheckList"), query);
}
}
......@@ -133,7 +133,7 @@ public class CheckAttendRecordEntity extends CheckAttendRecordVo {
*/
private Long categoryId;
/**
* 规则名称
* 规则分类名称
*/
private String categoryName;
@Override
......
package com.mortals.xhx.module.check.model.vo;
import lombok.Data;
/**
* 员工绩效核查汇总查询条件
*/
@Data
public class StaffCheckSummaryQuery {
/**员工ID*/
private Long staffId;
/** 开始 核查时间 */
private String checkTimeStart;
/** 结束 核查时间 */
private String checkTimeEnd;
}
package com.mortals.xhx.module.check.service;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.check.model.CheckAttendRecordEntity;
import com.mortals.xhx.module.check.dao.CheckAttendRecordDao;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryQuery;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryVo;
import java.util.List;
/**
* CheckAttendRecordService
*
......@@ -13,4 +20,19 @@ import com.mortals.xhx.module.check.dao.CheckAttendRecordDao;
public interface CheckAttendRecordService extends ICRUDService<CheckAttendRecordEntity,Long>{
CheckAttendRecordDao getDao();
/**
* 核查人工审核
* @param entity
* @param context
* @throws AppException
*/
void examine(CheckAttendRecordEntity entity, Context context) throws AppException;
/**
* 汇总已审核的核查记录
* @param query
* @return
*/
List<StaffCheckSummaryVo> summaryCheck(StaffCheckSummaryQuery query) throws AppException;
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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