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

合并

parents 08b2c6de f906d2fb
...@@ -113,8 +113,6 @@ export default { ...@@ -113,8 +113,6 @@ export default {
}, },
}, },
mounted() { mounted() {
console.log(this.tableData);
console.log(this.loading);
}, },
watch: { watch: {
tableData(val) { tableData(val) {
......
...@@ -22,9 +22,11 @@ ...@@ -22,9 +22,11 @@
<span>&nbsp;</span> <span>&nbsp;</span>
<el-switch <el-switch
v-if="switchBtn" v-if="switchBtn"
v-model="row.check"
@change="$emit('view', row)" @change="$emit('view', row)"
title="核查" title="核查"
v-model="row.check" :active-value="true"
:inactive-value="false"
></el-switch> ></el-switch>
<span>&nbsp;</span> <span>&nbsp;</span>
<el-button <el-button
......
...@@ -7,7 +7,124 @@ ...@@ -7,7 +7,124 @@
:destroy-on-close="true" :destroy-on-close="true"
size="50%" 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> <el-row>
<Field <Field
label="核查记录Id" label="核查记录Id"
...@@ -270,7 +387,7 @@ ...@@ -270,7 +387,7 @@
v-if="pageInfo.type != 'view'" v-if="pageInfo.type != 'view'"
noCancelBtn noCancelBtn
/> />
</el-form> </el-form> -->
</el-drawer> </el-drawer>
</template> </template>
...@@ -442,3 +559,51 @@ export default { ...@@ -442,3 +559,51 @@ export default {
}, },
}; };
</script> </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> <template>
<div class="page"> <div class="page">
<el-tabs v-model="activeName"> <el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="未处理" name="1"> <el-tab-pane label="未处理" name="1">
<LayoutTable :data="tableData" notAdd notDel :config="tableConfig"> <LayoutTable :data="tableData" notAdd notDel :config="tableConfig">
</LayoutTable> </LayoutTable>
...@@ -61,8 +61,25 @@ export default { ...@@ -61,8 +61,25 @@ export default {
BarCharts, BarCharts,
}, },
mixins: [table], mixins: [table],
created() { }, created() {
this.getData();
},
methods: { 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) { renderTable(tableData) {
return ( return (
<el-table stripe data={tableData} class="total-table"> <el-table stripe data={tableData} class="total-table">
...@@ -103,18 +120,41 @@ export default { ...@@ -103,18 +120,41 @@ export default {
], ],
config: { config: {
isshowTabPane: false, 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: [ columns: [
{ type: "selection", width: 60 }, { type: "selection", width: 60 },
{ type: "index", label: "序号", width: 50 }, { type: "index", label: "序号", width: 50 },
{ label: "姓名", prop: "staffName" }, { label: "姓名", prop: "staffName" },
{ label: "窗口工号", prop: "workNum" },
{ label: "所属部门", prop: "deptName" }, { label: "所属部门", prop: "deptName" },
{ label: "违规类型", prop: "ruleName" }, { label: "违规类型", prop: "irregularOtherType" },
{ label: "绩效规则", prop: "ruleName" }, { label: "绩效规则", prop: "ruleName" },
{ label: "扣分方式", prop: "subMethod", formatter: this.formatter }, { label: "扣分方式", prop: "subMethod", formatter: this.formatter },
...@@ -156,11 +196,12 @@ export default { ...@@ -156,11 +196,12 @@ export default {
},*/ },*/
{ {
label: "操作", label: "操作",
width: 240,
formatter: (row) => { formatter: (row) => {
return ( return (
<table-buttons <table-buttons
noAdd noAdd
noDel
noEdit
row={row} row={row}
onEdit={this.toEdit} onEdit={this.toEdit}
onView={this.toView} onView={this.toView}
......
...@@ -66,6 +66,7 @@ ...@@ -66,6 +66,7 @@
notAdd notAdd
notDel notDel
notSearch notSearch
notPagination
:config="tableConfig" :config="tableConfig"
> >
</LayoutTable> </LayoutTable>
...@@ -107,6 +108,7 @@ ...@@ -107,6 +108,7 @@
notAdd notAdd
notDel notDel
notSearch notSearch
notPagination
:config="tableConfig" :config="tableConfig"
> >
</LayoutTable> </LayoutTable>
...@@ -148,6 +150,7 @@ ...@@ -148,6 +150,7 @@
notAdd notAdd
notDel notDel
notSearch notSearch
notPagination
:config="tableConfig" :config="tableConfig"
> >
</LayoutTable> </LayoutTable>
...@@ -189,6 +192,7 @@ ...@@ -189,6 +192,7 @@
notAdd notAdd
notDel notDel
notSearch notSearch
notPagination
:config="tableConfig" :config="tableConfig"
> >
</LayoutTable> </LayoutTable>
...@@ -230,6 +234,7 @@ ...@@ -230,6 +234,7 @@
notAdd notAdd
notDel notDel
notSearch notSearch
notPagination
:config="tableConfig" :config="tableConfig"
> >
</LayoutTable> </LayoutTable>
...@@ -310,7 +315,7 @@ export default { ...@@ -310,7 +315,7 @@ export default {
mixins: [form, table], mixins: [form, table],
components: {}, components: {},
created() { created() {
this.changePath("perform/dept/conf"); this.changePath("perform//staff/conf");
// 获取部门列表 // 获取部门列表
this.$post("/dept/list", { page: 1, size: -1 }).then((res) => { this.$post("/dept/list", { page: 1, size: -1 }).then((res) => {
if (res.code == 1) { if (res.code == 1) {
...@@ -319,6 +324,7 @@ export default { ...@@ -319,6 +324,7 @@ export default {
this.deptArr = []; this.deptArr = [];
} }
}); });
this.checkArr = [];
// this.getKaoQin(); // this.getKaoQin();
}, },
data() { data() {
...@@ -333,30 +339,17 @@ export default { ...@@ -333,30 +339,17 @@ export default {
direction: "rtl", direction: "rtl",
toString: [], toString: [],
toDate: [], toDate: [],
tableData: [ tableData: [],
{
core: "-0.5",
name: "迟到",
simple: "迟到5分钟以内(包含5分钟)",
check: false,
},
],
// 表单校验 // 表单校验
rules: {}, rules: {},
activeName: "1", activeName: "1",
options: [ options: [],
{
value: "1",
label: "工作纪律",
},
{
value: "2",
label: "工作效能",
},
],
type: "", type: "",
keywords: "", keywords: "",
deptArr: [], deptArr: [],
urls: {
saveUrl: "/perform/dept/conf/save",
},
config: { config: {
isshowTabPane: false, isshowTabPane: false,
search: [], search: [],
...@@ -373,36 +366,39 @@ export default { ...@@ -373,36 +366,39 @@ export default {
label: "操作", label: "操作",
width: 100, width: 100,
formatter: (row) => { formatter: (row) => {
return ( if (row.check) {
<table-buttons return <span>不选择</span>;
noAdd } else {
noView return <span style="cursor:pointer">选择</span>;
noEdit }
noDel
switchBtn
row={row}
onEdit={this.eddRules}
onDel={this.toDelRules}
onView={this.switchChange}
/>
);
}, },
}, },
], ],
}, },
cateObj: {}, cateObj: {},
dataArr: [], dataArr: [],
checkArr: [],
}; };
}, },
// watch: {
// query: {
// deep,
// handler(val) {
// console.log(val);
// },
// },
// },
methods: { 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) { typeSelect(val) {
this.getKaoQin(val); this.getKaoQin(val);
}, },
...@@ -423,29 +419,56 @@ export default { ...@@ -423,29 +419,56 @@ export default {
categoryId, categoryId,
type: this.activeName, type: this.activeName,
page: this.query.page, page: this.query.page,
size: -1,
orderColList: this.typeArr, orderColList: this.typeArr,
name: this.searchValue, name: this.searchValue,
}).then((res) => { }).then((res) => {
if (res.code == 1) { if (res.code == 1) {
this.tableData = res.data; 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); this.$forceUpdate(this.tableData);
} else { } else {
this.tableData = {}; this.tableData = {};
} }
}); });
}, },
switchChange(val) {},
handleClick(val) { handleClick(val) {
this.getData(); this.getData();
this.cateObj = {};
this.type = "";
}, },
/** 编辑 */ /** 编辑 */
edit(row) { edit(row) {
this.reset(); this.reset();
this.query = { id: row.id }; 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) => { this.$get("/perform/dept/conf/info", { id: row.id }).then((res) => {
if (res.code == 1) { if (res.code == 1) {
this.form = res.data; 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 { } else {
this.form = {}; this.form = {};
} }
...@@ -459,14 +482,18 @@ export default { ...@@ -459,14 +482,18 @@ export default {
/** 新增 */ /** 新增 */
add(row) { add(row) {
this.reset(); this.reset();
// this.urls.currUrl = "perform/dept/conf/add";
this.getData(); this.getData();
this.open = true; this.open = true;
this.checkArr = [];
this.type = "";
this.activeName = "1";
this.pageInfo.type = "add"; this.pageInfo.type = "add";
this.title = "新增部门自动考核信息"; this.title = "新增部门自动考核信息";
}, },
/** 查看*/ /** 查看*/
view(row) { view(row) {
console.log(123);
return;
this.reset(); this.reset();
this.query = { id: row.id }; this.query = { id: row.id };
this.urls.currUrl = "perform/dept/conf/view"; this.urls.currUrl = "perform/dept/conf/view";
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
<div class="goal_title"> <div class="goal_title">
<img src="../../../../assets/images/u17641.svg" alt="" /> <img src="../../../../assets/images/u17641.svg" alt="" />
<span> <span>
{{ val.deptName ? val.deptName : "--" }} {{ val.deptName ? val.deptName : val.staffNames }}
</span> </span>
</div> </div>
<p class="goal_txt"> <p class="goal_txt">
...@@ -25,19 +25,19 @@ ...@@ -25,19 +25,19 @@
</p> </p>
<p> <p>
<el-tag style="margin: 0 5px 5px 0" <el-tag style="margin: 0 5px 5px 0"
>考勤绩效指标/工作纪律{{ val.attendCount }}</el-tag >考勤绩效指标:{{ val.attendCount }}</el-tag
> >
<el-tag style="margin: 0 5px 5px 0" <el-tag style="margin: 0 5px 5px 0"
>评价绩效指标/工作纪律{{ val.assessCount }}</el-tag >评价绩效指标:{{ val.assessCount }}</el-tag
> >
<el-tag style="margin: 0 5px 5px 0" <el-tag style="margin: 0 5px 5px 0"
>办件绩效指标/工作效能{{ val.workCount }}</el-tag >办件绩效指标:{{ val.workCount }}</el-tag
> >
<el-tag style="margin: 0 5px 5px 0" <el-tag style="margin: 0 5px 5px 0"
>效能绩效指标/工作纪律{{ val.effectCount }}</el-tag >效能绩效指标:{{ val.effectCount }}</el-tag
> >
<el-tag style="margin: 0 5px 5px 0" <el-tag style="margin: 0 5px 5px 0"
>其他绩效指标/工作纪律{{ val.otherCount }}</el-tag >其他绩效指标:{{ val.otherCount }}</el-tag
> >
</p> </p>
<p class="goal_txt"> <p class="goal_txt">
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="窗口负责人管理" name="2"> <el-tab-pane label="窗口负责人管理" name="2">
<div class="content"> <div class="content">
<LayoutTable :data="tableData" notSearch :config="tableConfig"> <LayoutTable :data="tableData" notSearch notDel :config="tableConfig">
</LayoutTable> </LayoutTable>
</div> </div>
</el-tab-pane> </el-tab-pane>
...@@ -99,7 +99,6 @@ export default { ...@@ -99,7 +99,6 @@ export default {
}, },
mixins: [table], mixins: [table],
created() { created() {
console.log(this.tableData);
sessionStorage.removeItem("type"); sessionStorage.removeItem("type");
sessionStorage.setItem("type", this.type); sessionStorage.setItem("type", this.type);
}, },
...@@ -168,6 +167,13 @@ export default { ...@@ -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() { data() {
return { return {
...@@ -182,13 +188,11 @@ export default { ...@@ -182,13 +188,11 @@ export default {
{ type: "selection", width: 60 }, { type: "selection", width: 60 },
{ type: "index", label: "序号", width: 50 }, { 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: "负责窗口数量", label: "负责窗口数量",
...@@ -197,10 +201,17 @@ export default { ...@@ -197,10 +201,17 @@ export default {
}, },
{ {
label: "创建时间", label: "更新时间",
prop: "createTime", prop: "updateTime",
formatter: this.formatterDate, formatter: this.formatterDate,
}, },
{
label: "更新人员",
prop: "updateUserId",
formatter: this.formatter,
},
{ {
label: "操作", label: "操作",
width: 240, width: 240,
...@@ -208,6 +219,7 @@ export default { ...@@ -208,6 +219,7 @@ export default {
return ( return (
<table-buttons <table-buttons
noAdd noAdd
noView
row={row} row={row}
onEdit={this.toEdit} onEdit={this.toEdit}
onView={this.toView} onView={this.toView}
...@@ -319,6 +331,9 @@ export default { ...@@ -319,6 +331,9 @@ export default {
margin-right: 10px; margin-right: 10px;
} }
} }
/deep/.el-tag {
width: 114px !important;
}
.goal_txt { .goal_txt {
font-family: "微软雅黑", sans-serif; font-family: "微软雅黑", sans-serif;
font-weight: 400; font-weight: 400;
......
...@@ -23,18 +23,22 @@ ...@@ -23,18 +23,22 @@
<Field <Field
label="联系电话:" label="联系电话:"
prop="phone" prop="phone"
maxLength="11"
v-model="form.phone" v-model="form.phone"
placeholder="请输入联系电话" placeholder="请输入联系电话"
/> />
<el-col style="width: 100%;" :span="24"> <el-col style="width: 100%;" :span="12">
<Field <el-form-item label="选择部门">
label="选择部门:" <el-select v-model="form.deptId" style="width: 100%;">
prop="deptId" <el-option
v-model="form.deptId" v-for="item in deptArr"
placeholder="选择部门" :key="item.id"
:enumData="deptGroup" :label="item.deptName"
type="select" :value="item.id"
/> >
</el-option
></el-select>
</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
...@@ -42,48 +46,33 @@ ...@@ -42,48 +46,33 @@
<div class="content_top"> <div class="content_top">
<span>请选择窗口工作人员:</span> <span>请选择窗口工作人员:</span>
<div class="search_box"> <div class="search_box">
<el-select v-model="type" placeholder="请选择部门"> <el-select v-model="deptValue" style="width: 100%;">
<el-option <el-option
v-for="item in options" v-for="item in deptArr"
:key="item.value" :key="item.id"
:label="item.label" :label="item.deptName"
:value="item.value" :value="item.id"
style="width: 200px;"
> >
</el-option> </el-option
</el-select> ></el-select>
<el-input <el-input
v-model="keywords" v-model="keywords"
placeholder="请输入姓名关键字搜索" placeholder="请输入姓名关键字搜索"
style="width: 200px;margin: 0 10px;" style="width: 200px;margin: 0 10px;"
></el-input> ></el-input>
<el-button type="primary"> 搜索 </el-button> <el-button type="primary" @click="handleSearch"> 搜索 </el-button>
</div> </div>
</div> </div>
<div class="table_box"> <div class="table_box">
<el-table <LayoutTable
:data="tableData" :data="tableData"
border notAdd
style="width: 100%" notDel
height="520" notSearch
@selection-change="handleSelectionChange" notPagination
:config="tableConfig"
> >
<el-table-column type="selection" width="55"> </el-table-column> </LayoutTable>
<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>
</div> </div>
</div> </div>
</el-row> </el-row>
...@@ -143,12 +132,23 @@ ...@@ -143,12 +132,23 @@
<script> <script>
import form from "@/assets/mixins/formdialog"; import form from "@/assets/mixins/formdialog";
import table from "@/assets/mixins/table";
export default { export default {
name: "WindowOwnerDetail", name: "WindowOwnerDetail",
mixins: [form], mixins: [form, table],
components: {}, components: {},
created() { created() {
this.changePath("window/owner"); 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() { data() {
return { return {
...@@ -159,68 +159,144 @@ export default { ...@@ -159,68 +159,144 @@ export default {
// 是否显示弹出层 // 是否显示弹出层
open: false, open: false,
direction: "rtl", direction: "rtl",
deptValue: "",
toString: [], toString: [],
toDate: [], toDate: [],
deptArr: [],
// 表单校验 // 表单校验
rules: {}, rules: {},
deptGroup: { 1: "部门1", 2: "部门2", 3: "部门3", 4: "部门4", 5: "部门5" },
options: [
{
value: "1",
label: "部门1",
},
{
value: "2",
label: "部门2",
},
],
type: "",
keywords: "", keywords: "",
tableData: [ checkArr: [],
{ urls: {
id: "123456", saveUrl: "/window/owner/save",
name: "xxx",
deptName: "部门1",
zhiwei: "工作人员",
status: "正式",
phone: "130****8888",
check: false,
}, },
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" },
{ {
id: "123456", label: "操作",
name: "xxx", width: 100,
deptName: "部门1", formatter: (row) => {
zhiwei: "工作人员", if (row.check) {
status: "正式", return <span>不选择</span>;
phone: "130****8888", } else {
check: false, return <span style="cursor:pointer">选择</span>;
}
},
}, },
], ],
},
}; };
}, },
methods: { methods: {
handleSelectionChange(val) { handleSearch() {
console.log(val); this.getData();
this.tableData.forEach((v) => (v.check = false)); },
val.forEach((v) => { getData() {
v.check = true; 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) { edit(row) {
this.reset(); this.reset();
this.query = { id: row.id }; 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.getData();
// this.urls.currUrl = "window/owner/edit";
// 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 = "window/owner/add"; // this.urls.currUrl = "window/owner/add";
// this.getData();
this.deptValue = "";
this.checkArr = [];
this.keywords = "";
this.getData(); this.getData();
this.open = true;
this.pageInfo.type = "add"; this.pageInfo.type = "add";
this.title = "新增窗口负责人"; this.title = "新增窗口负责人";
}, },
...@@ -228,8 +304,8 @@ export default { ...@@ -228,8 +304,8 @@ export default {
view(row) { view(row) {
this.reset(); this.reset();
this.query = { id: row.id }; this.query = { id: row.id };
this.urls.currUrl = "window/owner/view"; // this.urls.currUrl = "window/owner/view";
this.getData(); // this.getData();
this.pageInfo.type = "view"; this.pageInfo.type = "view";
this.title = "窗口负责人详细"; this.title = "窗口负责人详细";
}, },
...@@ -250,7 +326,7 @@ export default { ...@@ -250,7 +326,7 @@ export default {
// 表单重置 // 表单重置
reset() { reset() {
this.form = { this.form = {
deptId: 0, deptId: "",
deptName: "", deptName: "",
name: "", name: "",
number: "", number: "",
...@@ -275,7 +351,7 @@ export default { ...@@ -275,7 +351,7 @@ export default {
padding: 0 20px; padding: 0 20px;
.bottom_content { .bottom_content {
width: 100%; width: 100%;
height: 600px; height: 680px;
background-color: rgba(242, 246, 252, 1); background-color: rgba(242, 246, 252, 1);
box-sizing: border-box; box-sizing: border-box;
border-width: 1px; border-width: 1px;
......
...@@ -21,26 +21,52 @@ export default { ...@@ -21,26 +21,52 @@ export default {
}, },
styleObj: { styleObj: {
type: Object, type: Object,
default: () => {}, default: () => { },
}, },
parameter: {
type: Object,
default: () => { }
}
}, },
data() { data() {
return {}; return {
myChart: null
};
}, },
watch: { watch: {
title(val) { title(val) {
console.log(val); this.myChart && this.myChart.setOption({title:{text:val}})
this.drawLine();
}, },
parameter: {
handler: function (v) {
this.drawLine(v)
},
deep: true
}
}, },
mounted() { mounted() {
this.drawLine(); this.drawLine();
}, },
methods: { methods: {
drawLine() { drawLine(obj) {
if (obj && this.myChart) {
// 更新
this.myChart.setOption({
xAxis: {
data: obj.x
},
series: [
{
data: obj.y,
},
]
})
return
}
// 基于dom,初始化echarts实例 // 基于dom,初始化echarts实例
let myChart = this.$echarts.init(document.getElementById(this.id)); let myChart = this.$echarts.init(document.getElementById(this.id));
this.myChart = myChart
// 绘制图表 // 绘制图表
myChart.setOption({ myChart.setOption({
title: { title: {
...@@ -50,7 +76,7 @@ export default { ...@@ -50,7 +76,7 @@ export default {
fontSize: this.legendName == "旷工率" ? 24 : 18, fontSize: this.legendName == "旷工率" ? 24 : 18,
}, },
}, },
color:'#6e98ed', color: '#6e98ed',
legend: { legend: {
orient: "horizontal", orient: "horizontal",
right: "50px", right: "50px",
...@@ -65,7 +91,7 @@ export default { ...@@ -65,7 +91,7 @@ export default {
}, },
tooltip: {}, tooltip: {},
xAxis: { xAxis: {
data: ["部门1", "部门2", "部门3", "部门4", "部门5", "部门6"], data: [],
}, },
grid: { grid: {
left: "5%", left: "5%",
...@@ -79,7 +105,7 @@ export default { ...@@ -79,7 +105,7 @@ export default {
{ {
name: this.legendName, name: this.legendName,
type: "bar", type: "bar",
data: [5, 20, 36, 10, 10, 20], data: [],
itemStyle: { itemStyle: {
lineStyle: { lineStyle: {
......
...@@ -23,23 +23,50 @@ export default { ...@@ -23,23 +23,50 @@ export default {
type: Object, type: Object,
default: () => {}, default: () => {},
}, },
parameter: {
type: Object,
default: () => {}
}
}, },
data() { data() {
return {}; return {
myChart: null
};
}, },
watch: { watch: {
title(val) { title(val) {
console.log(val); this.myChart && this.myChart.setOption({title:{text:val}})
},
parameter: {
handler: function (v) {
this.drawLine(v)
}, },
deep: true
}
}, },
mounted() { mounted() {
this.drawLine(); this.drawLine();
}, },
methods: { methods: {
drawLine() { drawLine(obj) {
if (obj && this.myChart) {
// 更新
this.myChart.setOption({
xAxis: {
data: obj.x
},
series: [
{
data: obj.y,
},
]
})
return
}
// 基于dom,初始化echarts实例 // 基于dom,初始化echarts实例
let myChart = this.$echarts.init(document.getElementById(this.id)); let myChart = this.$echarts.init(document.getElementById(this.id));
this.myChart = myChart
// 绘制图表 // 绘制图表
myChart.setOption({ myChart.setOption({
title: { text: this.title }, title: { text: this.title },
...@@ -59,7 +86,7 @@ export default { ...@@ -59,7 +86,7 @@ export default {
color:'#6e98ed', color:'#6e98ed',
xAxis: { xAxis: {
type: "category", type: "category",
data: ["部门1", "部门2", "部门3", "部门4", "部门5", "部门6"], data: [],
}, },
grid: { grid: {
left: "3%", left: "3%",
...@@ -72,7 +99,7 @@ export default { ...@@ -72,7 +99,7 @@ export default {
{ {
name: this.legendName, name: this.legendName,
type: "line", type: "line",
data: [10, 20, 30, 90, 100, 100, 120], data: [],
smooth: true, smooth: true,
// itemStyle: { // itemStyle: {
// lineStyle: { // lineStyle: {
......
...@@ -23,23 +23,47 @@ export default { ...@@ -23,23 +23,47 @@ export default {
type: Object, type: Object,
default: () => {}, default: () => {},
}, },
parameter: {
type: Array,
default: () => []
}
}, },
data() { data() {
return {}; return {
myChart: null
};
}, },
watch: { watch: {
title(val) { title(val) {
console.log(val); this.myChart && this.myChart.setOption({title:{text:val}})
}, },
parameter: {
handler: function (v) {
this.drawLine(v)
},
deep: true
}
}, },
mounted() { mounted() {
this.drawLine(); this.drawLine();
}, },
methods: { methods: {
drawLine() { drawLine(obj) {
if (obj && this.myChart) {
// 更新
this.myChart.setOption({
series: [
{
data: obj,
},
]
})
return
}
// 基于dom,初始化echarts实例 // 基于dom,初始化echarts实例
let myChart = this.$echarts.init(document.getElementById(this.id)); let myChart = this.$echarts.init(document.getElementById(this.id));
this.myChart = myChart
// 绘制图表 // 绘制图表
myChart.setOption({ myChart.setOption({
title: { text: this.title }, title: { text: this.title },
...@@ -70,13 +94,7 @@ export default { ...@@ -70,13 +94,7 @@ export default {
name: this.legendName, name: this.legendName,
type: "pie", type: "pie",
radius: "65%", radius: "65%",
data: [ data: this.parameter,
{ value: 1048, name: "部门1" },
{ value: 735, name: "部门2" },
{ value: 580, name: "部门3" },
{ value: 484, name: "部门4" },
{ value: 300, name: "部门5" },
],
emphasis: { emphasis: {
itemStyle: { itemStyle: {
shadowBlur: 10, shadowBlur: 10,
......
...@@ -145,7 +145,14 @@ ...@@ -145,7 +145,14 @@
<dependency> <dependency>
<groupId>com.aliyun</groupId> <groupId>com.aliyun</groupId>
<artifactId>dingtalk</artifactId> <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>
<dependency> <dependency>
......
...@@ -6,11 +6,10 @@ import com.mortals.xhx.common.code.ProcessStatusEnum; ...@@ -6,11 +6,10 @@ import com.mortals.xhx.common.code.ProcessStatusEnum;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
@Data @Data
public abstract class BaseReq implements Serializable { public abstract class BaseReq implements Serializable {
/** /**
* 当前页 * 当前页
*/ */
...@@ -21,4 +20,35 @@ public abstract class BaseReq implements Serializable { ...@@ -21,4 +20,35 @@ public abstract class BaseReq implements Serializable {
private Integer size; 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; ...@@ -2,19 +2,29 @@ package com.mortals.xhx.busiz.dingtalk.api;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; 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.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.common.Rest; 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.config.TalkConfiguration;
import com.mortals.xhx.busiz.dingtalk.req.DingTalkBaseReq; 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.code.YesNoEnum;
import com.mortals.xhx.common.pdu.ApiRespPdu; import com.mortals.xhx.common.pdu.ApiRespPdu;
import lombok.extern.apachecommons.CommonsLog; import lombok.extern.apachecommons.CommonsLog;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody; import sun.security.krb5.internal.APOptions;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import java.util.List;
/** /**
* 钉钉相关外部接口 * 钉钉相关外部接口
...@@ -28,6 +38,7 @@ public class TalkApiController { ...@@ -28,6 +38,7 @@ public class TalkApiController {
@Autowired @Autowired
private TalkConfiguration talkConfiguration; private TalkConfiguration talkConfiguration;
private String dingToken;
/** /**
* 获取token * 获取token
...@@ -35,35 +46,194 @@ public class TalkApiController { ...@@ -35,35 +46,194 @@ public class TalkApiController {
* @return * @return
*/ */
@PostMapping("/dingtalk/gettoken") @PostMapping("/dingtalk/gettoken")
public Rest<String> getToken(@RequestBody DingTalkBaseReq dingTalkBaseReq) { @UnAuth
log.info("收到【getToken】请求【请求体】--> {}", JSON.toJSONString(dingTalkBaseReq)); public ApiRespPdu<String> getToken() {
ApiRespPdu<String> apiRespPdu = new ApiRespPdu<>();
try { try {
DingTalkClient client = new DefaultDingTalkClient(talkConfiguration.getGetTokneUrl());
// 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());
OapiGettokenRequest req = new OapiGettokenRequest(); OapiGettokenRequest req = new OapiGettokenRequest();
req.setAppkey(apiKey); req.setAppkey(talkConfiguration.getAppKey());
req.setAppsecret(appsecret); req.setAppsecret(talkConfiguration.getAppSecret());
req.setHttpMethod("GET"); req.setHttpMethod("GET");
OapiGettokenResponse rsp = client.execute(req); OapiGettokenResponse rsp = client.execute(req);
log.info("gettoken rsp:" + rsp.getBody()); log.info("gettoken rsp:" + rsp.getBody());
if (rsp.getErrcode() == 0) { if (rsp.getErrcode() == 0) {
dingToken = rsp.getAccessToken();
apiRespPdu.setCode(0);
apiRespPdu.setData(rsp.getAccessToken()); apiRespPdu.setData(rsp.getAccessToken());
apiRespPdu.setMsg(rsp.getMsg());
} else { } 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) { } catch (Exception e) {
log.error("异常", 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 { ...@@ -19,19 +19,47 @@ public class TalkConfiguration {
@Value("${dingtalk.agentId:''}") @Value("${dingtalk.agentId:''}")
private String getAgentId; private String getAgentId;
/**
* appKey
*/
@Value("${dingtalk.AppKey:''}")
private String AppKey;
/**
* AppSecret
*/
@Value("${dingtalk.AppSecret:''}")
private String AppSecret;
/** /**
* getToken * getToken
*/ */
@Value("${dingtalk.gettoken:''}") @Value("${dingtalk.gettoken:https://oapi.dingtalk.com/gettoken}")
private String getTokneUrl; private String getTokneUrl;
/** /**
* getbymobile * 获取部门列表
*/ */
@Value("${dingtalk.getbymobile:''}") @Value("${dingtalk.listsub:https://oapi.dingtalk.com/topapi/v2/department/listsub}")
private String getbymobile; 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 * 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; package com.mortals.xhx.busiz.req;
import com.mortals.framework.annotation.Excel;
import com.mortals.xhx.busiz.BaseReq; import com.mortals.xhx.busiz.BaseReq;
import com.mortals.xhx.module.perform.model.PerformAttendAppealFilesEntity;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List;
@Data @Data
...@@ -20,16 +24,28 @@ public class AppealReq extends BaseReq { ...@@ -20,16 +24,28 @@ public class AppealReq extends BaseReq {
private Integer appealResult; private Integer appealResult;
private Integer processStatus; private Integer processStatus;
/** /**
* 当前员工id * 当前员工id
*/ */
private Long staffId; private Long staffId;
/**
* 核查记录id
*/
private Long 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; 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 com.mortals.xhx.busiz.BaseReq;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
@Data @Data
public class PerformSaveReq extends BaseReq { public class ReviewSaveReq extends BaseReq {
/**
* 工号
*/
private String workNum;
/**
* 标题
*/
private String title;
/**
* 扣分时间
*/
private Date happenTime;
/**
* 规则编码
*/
private String ruleCode;
private String phone;
/**
* 类型
*/
private String performType;
/** /**
* 评价结果(1.非常不满意,2.差评) * 评价结果(1.非常不满意,2.差评)
...@@ -47,6 +17,7 @@ public class PerformSaveReq extends BaseReq { ...@@ -47,6 +17,7 @@ public class PerformSaveReq extends BaseReq {
/** /**
* 评价时间 * 评价时间
*/ */
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date reviewTime; private Date reviewTime;
/** /**
* 评价来源(窗口评价系统,导视系统,自助服务系统,微官网,其它) * 评价来源(窗口评价系统,导视系统,自助服务系统,微官网,其它)
...@@ -57,4 +28,6 @@ public class PerformSaveReq extends BaseReq { ...@@ -57,4 +28,6 @@ public class PerformSaveReq extends BaseReq {
*/ */
private String reviewDevice; 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 { ...@@ -119,6 +119,8 @@ public class PerformDetailInfo {
*/ */
private String filePaths; private String filePaths;
/** /**
* 评价结果(1.非常不满意,2.差评) * 评价结果(1.非常不满意,2.差评)
*/ */
......
...@@ -60,5 +60,10 @@ public class PerformInfo { ...@@ -60,5 +60,10 @@ public class PerformInfo {
*/ */
private String performType; private String performType;
/**
* 申诉状态(0.未申诉,1.申诉中,2.申诉拒绝,3.申诉通过)
*/
private Integer appealStatus;
} }
...@@ -80,8 +80,9 @@ public class ApiLoginController extends BaseJsonBodyController { ...@@ -80,8 +80,9 @@ public class ApiLoginController extends BaseJsonBodyController {
data.put("userType", userEntity.getUserType()); data.put("userType", userEntity.getUserType());
HashSet<Integer> set = new HashSet<>(); HashSet<Integer> set = new HashSet<>();
set.add(1); set.add(0);
set.add(2); set.add(2);
set.add(3);
if (ObjectUtils.isEmpty(userEntity.getUserType()) || !set.contains(userEntity.getUserType())) { if (ObjectUtils.isEmpty(userEntity.getUserType()) || !set.contains(userEntity.getUserType())) {
throw new AppException("当前用户不支持H5登录!"); throw new AppException("当前用户不支持H5登录!");
...@@ -89,7 +90,7 @@ public class ApiLoginController extends BaseJsonBodyController { ...@@ -89,7 +90,7 @@ public class ApiLoginController extends BaseJsonBodyController {
userEntity.setLoginTime(System.currentTimeMillis()); userEntity.setLoginTime(System.currentTimeMillis());
userEntity.setToken(IdUtil.fastSimpleUUID()); userEntity.setToken(IdUtil.fastSimpleUUID());
userEntity.setExpireTime(DateUtils.addCurrDate(7).getTime()); userEntity.setExpireTime(DateUtils.addCurrDate(3).getTime());
String token = authTokenService.createToken(userEntity); String token = authTokenService.createToken(userEntity);
data.put("token", token); data.put("token", token);
ret.put(KEY_RESULT_DATA, data); ret.put(KEY_RESULT_DATA, data);
......
...@@ -10,14 +10,11 @@ import com.mortals.framework.exception.AppException; ...@@ -10,14 +10,11 @@ import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.model.PageInfo; import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result; 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.AppealReq;
import com.mortals.xhx.busiz.req.PerformReq; import com.mortals.xhx.busiz.req.PerformReq;
import com.mortals.xhx.busiz.rsp.AppealStatInfo; 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.PerformTypeEnum;
import com.mortals.xhx.common.code.ProcessStatusEnum;
import com.mortals.xhx.common.utils.BeanUtil; import com.mortals.xhx.common.utils.BeanUtil;
import com.mortals.xhx.module.check.model.*; import com.mortals.xhx.module.check.model.*;
import com.mortals.xhx.module.check.service.*; import com.mortals.xhx.module.check.service.*;
...@@ -25,7 +22,6 @@ import com.mortals.xhx.module.perform.model.PerformAttendAppealEntity; ...@@ -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.model.PerformAttendAppealQuery;
import com.mortals.xhx.module.perform.service.PerformAttendAppealService; import com.mortals.xhx.module.perform.service.PerformAttendAppealService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
...@@ -36,9 +32,7 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -36,9 +32,7 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
import static com.mortals.framework.ap.SysConstains.*; import static com.mortals.framework.ap.SysConstains.*;
import static com.mortals.xhx.common.key.ErrorCode.ERROR_TOKEN_EXPIRED; 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; ...@@ -56,7 +50,22 @@ import static com.mortals.xhx.common.key.ErrorCode.ERROR_TOKEN_EXPIRED_CONTENT;
public class AppealApiController extends AbstractBaseController<PerformReq> { public class AppealApiController extends AbstractBaseController<PerformReq> {
@Autowired @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> { ...@@ -105,6 +114,10 @@ public class AppealApiController extends AbstractBaseController<PerformReq> {
//未设置时间的情况,默认为当月 //未设置时间的情况,默认为当月
appealReq.setApperalStartDate(DateUtil.beginOfMonth(new Date()).toDateStr()); appealReq.setApperalStartDate(DateUtil.beginOfMonth(new Date()).toDateStr());
appealReq.setAppealEndDate(DateUtil.today()); 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); PageInfo pageInfo = buildPageInfo(appealReq);
PerformAttendAppealQuery query = new PerformAttendAppealQuery(); PerformAttendAppealQuery query = new PerformAttendAppealQuery();
...@@ -112,7 +125,7 @@ public class AppealApiController extends AbstractBaseController<PerformReq> { ...@@ -112,7 +125,7 @@ public class AppealApiController extends AbstractBaseController<PerformReq> {
query.setAppealTimeEnd(appealReq.getAppealEndDate()); query.setAppealTimeEnd(appealReq.getAppealEndDate());
query.setStaffId(context.getUser().getCustomerId()); 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(KEY_RESULT_DATA, result.getList());
model.put(PAGEINFO_KEY, result.getPageInfo()); model.put(PAGEINFO_KEY, result.getPageInfo());
parsePageInfo(model, result.getPageInfo()); parsePageInfo(model, result.getPageInfo());
...@@ -139,7 +152,7 @@ public class AppealApiController extends AbstractBaseController<PerformReq> { ...@@ -139,7 +152,7 @@ public class AppealApiController extends AbstractBaseController<PerformReq> {
if (ObjectUtils.isEmpty(appealReq.getId())) { if (ObjectUtils.isEmpty(appealReq.getId())) {
throw new AppException("详细查询id不能为空!"); throw new AppException("详细查询id不能为空!");
} }
PerformAttendAppealEntity performAttendAppealEntity = attendAppealService.get(appealReq.getId(), context); PerformAttendAppealEntity performAttendAppealEntity = appealService.get(appealReq.getId(), context);
rest.setData(performAttendAppealEntity); rest.setData(performAttendAppealEntity);
recordSysLog(request, busiDesc + " 【成功】"); recordSysLog(request, busiDesc + " 【成功】");
...@@ -155,21 +168,62 @@ public class AppealApiController extends AbstractBaseController<PerformReq> { ...@@ -155,21 +168,62 @@ public class AppealApiController extends AbstractBaseController<PerformReq> {
* 申诉新增 * 申诉新增
*/ */
@PostMapping(value = "save") @PostMapping(value = "save")
public Rest<PerformAttendAppealEntity> appealSave(@RequestBody PerformAttendAppealEntity appealEntity) { public Rest<PerformAttendAppealEntity> appealSave(@RequestBody AppealReq req) {
String busiDesc = "个人申诉新增"; String busiDesc = "个人申诉新增";
log.info("【{}】【请求体】--> {}", busiDesc, JSONObject.toJSONString(appealEntity)); log.info("【{}】【请求体】--> {}", busiDesc, JSONObject.toJSONString(req));
Rest<PerformAttendAppealEntity> rest = Rest.ok(busiDesc + " 【成功】"); Rest<PerformAttendAppealEntity> rest = Rest.ok(busiDesc + " 【成功】");
Context context = this.getContext(); Context context = this.getContext();
try { 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); rest.setData(saveEntity);
recordSysLog(request, busiDesc + " 【成功】"); recordSysLog(request, busiDesc + " 【成功】");
} catch (Exception e) { } catch (Exception e) {
log.error(busiDesc, e); log.error(busiDesc, e);
rest = Rest.fail(super.convertException(e)); rest = Rest.fail(super.convertException(e));
} }
log.info("【{}】【响应体】--> {}", busiDesc, JSONObject.toJSONString(appealEntity)); log.info("【{}】【响应体】--> {}", busiDesc, JSONObject.toJSONString(req));
return rest; return rest;
} }
......
...@@ -7,19 +7,13 @@ import com.mortals.framework.common.Rest; ...@@ -7,19 +7,13 @@ import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.model.PageInfo; 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.FeedbackReq;
import com.mortals.xhx.busiz.req.PerformReq; import com.mortals.xhx.busiz.req.FeedbackSaveReq;
import com.mortals.xhx.busiz.rsp.AppealStatInfo;
import com.mortals.xhx.common.code.YesNoEnum; import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.module.check.service.*; import com.mortals.xhx.module.feedback.model.*;
import com.mortals.xhx.module.feedback.model.FeedbackEntity; import com.mortals.xhx.module.feedback.service.FeedbackAnswerService;
import com.mortals.xhx.module.feedback.model.FeedbackStaffEntity;
import com.mortals.xhx.module.feedback.service.FeedbackService; import com.mortals.xhx.module.feedback.service.FeedbackService;
import com.mortals.xhx.module.perform.model.PerformAttendAppealEntity; import com.mortals.xhx.module.feedback.service.FeedbackStaffService;
import com.mortals.xhx.module.perform.model.PerformAttendAppealQuery;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
...@@ -32,6 +26,7 @@ import java.util.Date; ...@@ -32,6 +26,7 @@ import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
import static com.mortals.framework.ap.SysConstains.*; import static com.mortals.framework.ap.SysConstains.*;
import static com.mortals.xhx.common.key.ErrorCode.ERROR_TOKEN_EXPIRED; import static com.mortals.xhx.common.key.ErrorCode.ERROR_TOKEN_EXPIRED;
...@@ -50,6 +45,10 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> { ...@@ -50,6 +45,10 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> {
@Autowired @Autowired
private FeedbackService feedbackService; private FeedbackService feedbackService;
@Autowired
private FeedbackStaffService feedbackStaffService;
@Autowired
private FeedbackAnswerService answerService;
/** /**
* 反馈列表 * 反馈列表
...@@ -70,20 +69,41 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> { ...@@ -70,20 +69,41 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> {
//未设置时间的情况,默认为当月 //未设置时间的情况,默认为当月
feedbackReq.setFeedBackStartDate(DateUtil.beginOfMonth(new Date()).toDateStr()); feedbackReq.setFeedBackStartDate(DateUtil.beginOfMonth(new Date()).toDateStr());
feedbackReq.setFeedBackEndDate(DateUtil.today()); 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 //todo
PageInfo pageAllInfo = new PageInfo();
if (YesNoEnum.YES.getValue() == feedbackReq.getFeedbackStatus()) { 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 { } 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()); pageAllInfo.setCurrPage(1);
// model.put(PAGEINFO_KEY, result.getPageInfo()); pageAllInfo.setPrePageResult(-1);
// parsePageInfo(model, result.getPageInfo()); model.put(PAGEINFO_KEY, pageAllInfo);
parsePageInfo(model, pageAllInfo);
recordSysLog(request, busiDesc + " 【成功】"); recordSysLog(request, busiDesc + " 【成功】");
} catch (Exception e) { } catch (Exception e) {
...@@ -97,19 +117,40 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> { ...@@ -97,19 +117,40 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> {
* 反馈问卷新增 * 反馈问卷新增
*/ */
@PostMapping(value = "save") @PostMapping(value = "save")
public Rest<FeedbackEntity> feedbackSave(@RequestBody FeedbackEntity feedbackEntity) { public Rest<FeedbackEntity> feedbackAnswerSave(@RequestBody FeedbackSaveReq req) {
Context context = this.getContext(); Context context = this.getContext();
String busiDesc = "反馈回答"; String busiDesc = "反馈回答";
Rest<FeedbackEntity> rest = Rest.ok(busiDesc + " 【成功】"); Rest<FeedbackEntity> rest = Rest.ok(busiDesc + " 【成功】");
try {
if (ObjectUtils.isEmpty(context) || ObjectUtils.isEmpty(context.getUser())) { if (ObjectUtils.isEmpty(context) || ObjectUtils.isEmpty(context.getUser())) {
throw new AppException(ERROR_TOKEN_EXPIRED, ERROR_TOKEN_EXPIRED_CONTENT); throw new AppException(ERROR_TOKEN_EXPIRED, ERROR_TOKEN_EXPIRED_CONTENT);
} }
try { if (ObjectUtils.isEmpty(req.getFeedbackId())) throw new AppException("反馈信息ID不能为空!");
//todo
//如果时间已经结束 则不能再提交
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 + " 【成功】"); recordSysLog(request, busiDesc + " 【成功】");
} catch (Exception e) { } catch (Exception e) {
log.error(busiDesc, e); log.error(busiDesc, e);
......
...@@ -34,8 +34,7 @@ public class TestController { ...@@ -34,8 +34,7 @@ public class TestController {
public String idGens() { public String idGens() {
log.info("测试id生成"); log.info("测试id生成");
String stringId = idgeneratorService.getLongId(IdgeneratorServiceImpl.IdGeneratorKey.EFFECT).toString(); String stringId = idgeneratorService.getLongId(IdgeneratorServiceImpl.IdGeneratorKey.EFFECT_KEY).toString();
return stringId; 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; ...@@ -8,11 +8,10 @@ import java.util.Map;
*/ */
public enum CheckTypeEnum { public enum CheckTypeEnum {
考勤绩效(1, "考勤绩效"), 考勤绩效(1, "考勤绩效"),
效能绩效(2, "效能绩效"), 评价绩效(2, "评价绩效"),
评价绩效(3, "评价绩效"), 办件绩效(3, "办件绩效"),
办件绩效(4, "办件绩效"), 效能绩效(4, "效能绩效"),
差评绩效(5, "差评绩效"), 其它绩效(5, "其它绩效"),
其它绩效(6, "其它绩效"),
; ;
private Integer value; private Integer value;
private String desc; private String desc;
......
...@@ -4,13 +4,13 @@ import java.util.LinkedHashMap; ...@@ -4,13 +4,13 @@ import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
/** /**
* 处理状态(1.未核查,2.已核查)枚举类 * 处理状态(1.未处理,2.已处理)枚举类
* *
* @author zxfei * @author zxfei
*/ */
public enum ProcessStatusEnum { public enum ProcessStatusEnum {
核查(1, "未核查"), 处理(1, "未处理"),
核查(2, "已核查"); 处理(2, "已处理");
private Integer value; private Integer value;
private String desc; private String desc;
......
...@@ -4,13 +4,14 @@ import java.util.LinkedHashMap; ...@@ -4,13 +4,14 @@ import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
/** /**
* 扣分方式(1.系统自动,2.人工添加)枚举类 * 扣分方式(1.系统自动,2.人工添加,3.大厅巡查)枚举类
* *
* @author zxfei * @author zxfei
*/ */
public enum SubMethodEnum { public enum SubMethodEnum {
系统自动(1, "系统自动"), 系统自动(1, "系统自动"),
人工添加(2, "人工添加"); 人工添加(2, "人工添加"),
大厅巡查(3, "大厅巡查");
private Integer value; private Integer value;
private String desc; private String desc;
......
...@@ -11,7 +11,8 @@ import java.util.Map; ...@@ -11,7 +11,8 @@ import java.util.Map;
public enum UserType { public enum UserType {
SYSTEM(0, "系统用户"), SYSTEM(0, "系统用户"),
WORK(1, "后台管理"), WORK(1, "后台管理"),
WORK_PERSON(2, "工作人员"); WORK_PERSON(2, "工作人员"),
INSPECT_PERSON(3, "巡查人员");;
private int value; private int value;
private String desc; private String desc;
......
...@@ -2,6 +2,9 @@ package com.mortals.xhx.module.check.dao; ...@@ -2,6 +2,9 @@ package com.mortals.xhx.module.check.dao;
import com.mortals.framework.dao.ICRUDDao; import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.check.model.CheckAttendRecordEntity; 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; import java.util.List;
/** /**
* 考勤绩效记录核查信息Dao * 考勤绩效记录核查信息Dao
...@@ -13,5 +16,10 @@ import java.util.List; ...@@ -13,5 +16,10 @@ import java.util.List;
public interface CheckAttendRecordDao extends ICRUDDao<CheckAttendRecordEntity,Long>{ 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; ...@@ -2,6 +2,9 @@ package com.mortals.xhx.module.check.dao;
import com.mortals.framework.dao.ICRUDDao; import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.check.model.CheckComplainRecordEntity; 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; import java.util.List;
/** /**
* 评价绩效投诉核查信息Dao * 评价绩效投诉核查信息Dao
...@@ -13,5 +16,10 @@ import java.util.List; ...@@ -13,5 +16,10 @@ import java.util.List;
public interface CheckComplainRecordDao extends ICRUDDao<CheckComplainRecordEntity,Long>{ 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; ...@@ -2,6 +2,9 @@ package com.mortals.xhx.module.check.dao;
import com.mortals.framework.dao.ICRUDDao; import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.check.model.CheckEffectRecordEntity; 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; import java.util.List;
/** /**
* 效能绩效核查信息Dao * 效能绩效核查信息Dao
...@@ -13,5 +16,10 @@ import java.util.List; ...@@ -13,5 +16,10 @@ import java.util.List;
public interface CheckEffectRecordDao extends ICRUDDao<CheckEffectRecordEntity,Long>{ 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; ...@@ -2,6 +2,9 @@ package com.mortals.xhx.module.check.dao;
import com.mortals.framework.dao.ICRUDDao; import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.check.model.CheckGoworkRecordEntity; 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; import java.util.List;
/** /**
* 办件绩效核查信息Dao * 办件绩效核查信息Dao
...@@ -13,5 +16,10 @@ import java.util.List; ...@@ -13,5 +16,10 @@ import java.util.List;
public interface CheckGoworkRecordDao extends ICRUDDao<CheckGoworkRecordEntity,Long>{ 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; ...@@ -2,6 +2,9 @@ package com.mortals.xhx.module.check.dao;
import com.mortals.framework.dao.ICRUDDao; import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.check.model.CheckOtherRecordEntity; 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; import java.util.List;
/** /**
* 其它绩效核查信息Dao * 其它绩效核查信息Dao
...@@ -13,5 +16,10 @@ import java.util.List; ...@@ -13,5 +16,10 @@ import java.util.List;
public interface CheckOtherRecordDao extends ICRUDDao<CheckOtherRecordEntity,Long>{ 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; ...@@ -2,6 +2,9 @@ package com.mortals.xhx.module.check.dao;
import com.mortals.framework.dao.ICRUDDao; import com.mortals.framework.dao.ICRUDDao;
import com.mortals.xhx.module.check.model.CheckReviewRecordEntity; 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; import java.util.List;
/** /**
* 评价差评绩效核查信息Dao * 评价差评绩效核查信息Dao
...@@ -13,5 +16,10 @@ import java.util.List; ...@@ -13,5 +16,10 @@ import java.util.List;
public interface CheckReviewRecordDao extends ICRUDDao<CheckReviewRecordEntity,Long>{ public interface CheckReviewRecordDao extends ICRUDDao<CheckReviewRecordEntity,Long>{
/**
* 汇总已审核的核查记录
* @param query
* @return
*/
List<StaffCheckSummaryVo> summaryCheck(StaffCheckSummaryQuery query);
} }
package com.mortals.xhx.module.check.dao.ibatis; 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 org.springframework.stereotype.Repository;
import com.mortals.xhx.module.check.dao.CheckAttendRecordDao; import com.mortals.xhx.module.check.dao.CheckAttendRecordDao;
import com.mortals.xhx.module.check.model.CheckAttendRecordEntity; import com.mortals.xhx.module.check.model.CheckAttendRecordEntity;
...@@ -17,5 +19,8 @@ import java.util.List; ...@@ -17,5 +19,8 @@ import java.util.List;
public class CheckAttendRecordDaoImpl extends BaseCRUDDaoMybatis<CheckAttendRecordEntity,Long> implements CheckAttendRecordDao { 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; 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 org.springframework.stereotype.Repository;
import com.mortals.xhx.module.check.dao.CheckComplainRecordDao; import com.mortals.xhx.module.check.dao.CheckComplainRecordDao;
import com.mortals.xhx.module.check.model.CheckComplainRecordEntity; import com.mortals.xhx.module.check.model.CheckComplainRecordEntity;
...@@ -17,5 +19,8 @@ import java.util.List; ...@@ -17,5 +19,8 @@ import java.util.List;
public class CheckComplainRecordDaoImpl extends BaseCRUDDaoMybatis<CheckComplainRecordEntity,Long> implements CheckComplainRecordDao { 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; 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 org.springframework.stereotype.Repository;
import com.mortals.xhx.module.check.dao.CheckEffectRecordDao; import com.mortals.xhx.module.check.dao.CheckEffectRecordDao;
import com.mortals.xhx.module.check.model.CheckEffectRecordEntity; import com.mortals.xhx.module.check.model.CheckEffectRecordEntity;
...@@ -17,5 +19,8 @@ import java.util.List; ...@@ -17,5 +19,8 @@ import java.util.List;
public class CheckEffectRecordDaoImpl extends BaseCRUDDaoMybatis<CheckEffectRecordEntity,Long> implements CheckEffectRecordDao { 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; 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 org.springframework.stereotype.Repository;
import com.mortals.xhx.module.check.dao.CheckGoworkRecordDao; import com.mortals.xhx.module.check.dao.CheckGoworkRecordDao;
import com.mortals.xhx.module.check.model.CheckGoworkRecordEntity; import com.mortals.xhx.module.check.model.CheckGoworkRecordEntity;
...@@ -17,5 +19,8 @@ import java.util.List; ...@@ -17,5 +19,8 @@ import java.util.List;
public class CheckGoworkRecordDaoImpl extends BaseCRUDDaoMybatis<CheckGoworkRecordEntity,Long> implements CheckGoworkRecordDao { 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; 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 org.springframework.stereotype.Repository;
import com.mortals.xhx.module.check.dao.CheckOtherRecordDao; import com.mortals.xhx.module.check.dao.CheckOtherRecordDao;
import com.mortals.xhx.module.check.model.CheckOtherRecordEntity; import com.mortals.xhx.module.check.model.CheckOtherRecordEntity;
...@@ -17,5 +19,8 @@ import java.util.List; ...@@ -17,5 +19,8 @@ import java.util.List;
public class CheckOtherRecordDaoImpl extends BaseCRUDDaoMybatis<CheckOtherRecordEntity,Long> implements CheckOtherRecordDao { 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; 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 org.springframework.stereotype.Repository;
import com.mortals.xhx.module.check.dao.CheckReviewRecordDao; import com.mortals.xhx.module.check.dao.CheckReviewRecordDao;
import com.mortals.xhx.module.check.model.CheckReviewRecordEntity; import com.mortals.xhx.module.check.model.CheckReviewRecordEntity;
...@@ -17,5 +19,8 @@ import java.util.List; ...@@ -17,5 +19,8 @@ import java.util.List;
public class CheckReviewRecordDaoImpl extends BaseCRUDDaoMybatis<CheckReviewRecordEntity,Long> implements CheckReviewRecordDao { 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 { ...@@ -133,7 +133,7 @@ public class CheckAttendRecordEntity extends CheckAttendRecordVo {
*/ */
private Long categoryId; private Long categoryId;
/** /**
* 规则名称 * 规则分类名称
*/ */
private String categoryName; private String categoryName;
@Override @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.model.vo;
import lombok.Data;
import java.math.BigDecimal;
/**
* 员工绩效核查汇总结果视图
*/
@Data
public class StaffCheckSummaryVo {
/**
* 员工ID
*/
private Long staffId;
/**
* 员工姓名
*/
private String staffName;
/**
* 工号
*/
private String workNum;
/**
* 所属部门
*/
private Long deptId;
/**
* 所属部门名称
*/
private String deptName;
/**
* 汇总分值
*/
private BigDecimal sumScore;
/**
* 年
*/
private Integer year;
/**
* 月
*/
private Integer month;
}
...@@ -8,7 +8,7 @@ import java.util.List; ...@@ -8,7 +8,7 @@ import java.util.List;
* 绩效记录申诉信息 DAO接口 * 绩效记录申诉信息 DAO接口
* *
* @author zxfei * @author zxfei
* @date 2023-07-05 * @date 2023-07-12
*/ */
public interface PerformAttendAppealDao extends ICRUDDao<PerformAttendAppealEntity,Long>{ public interface PerformAttendAppealDao extends ICRUDDao<PerformAttendAppealEntity,Long>{
......
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