Commit 81b38a24 authored by 赵啸非's avatar 赵啸非

Merge remote-tracking branch 'origin/master'

parents 0cac0506 ca3a158d
...@@ -11,11 +11,11 @@ ...@@ -11,11 +11,11 @@
<router-link to="/"> <router-link to="/">
<img <img
src="../assets/images/logo.png" src="../assets/images/logo.png"
style="margin-bottom:5px;margin-left: 24px;" style="margin-bottom: 5px; margin-left: 24px"
height="40" height="40"
alt="" alt=""
/> />
<b style="color:white;font-size:20px;"> <b style="color: white; font-size: 20px">
&nbsp;&nbsp;&nbsp;智慧政务绩效管理系统 &nbsp;&nbsp;&nbsp;智慧政务绩效管理系统
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</b> </b>
...@@ -43,14 +43,14 @@ ...@@ -43,14 +43,14 @@
</el-badge> </el-badge>
</div> --> </div> -->
<div class="controllBar" @click="returnHome"> <div class="controllBar" @click="returnHome">
<i class="el-icon-s-home" style="font-size: 15px;margin-right: 10px"> <i class="el-icon-s-home" style="font-size: 15px; margin-right: 10px">
首页</i 首页</i
> >
</div> </div>
<div class="layout-profile"> <div class="layout-profile">
<el-dropdown @command="handleCommand"> <el-dropdown @command="handleCommand">
<span class="el-dropdown-link" style="color:white"> <span class="el-dropdown-link" style="color: white">
{{ userData.currUserName }} {{ userData.currUserName }}
<i class="el-icon-arrow-down el-icon&#45;&#45;right"></i> <i class="el-icon-arrow-down el-icon&#45;&#45;right"></i>
</span> </span>
...@@ -124,9 +124,7 @@ export default { ...@@ -124,9 +124,7 @@ export default {
beforeDestroy() { beforeDestroy() {
console.log("beforeDestroy"); console.log("beforeDestroy");
}, },
mounted() { mounted() {},
console.log(this.menu);
},
computed: { computed: {
group() { group() {
const relativeGroup = this.$store.state.group; const relativeGroup = this.$store.state.group;
......
...@@ -137,9 +137,9 @@ ...@@ -137,9 +137,9 @@
<el-row> <el-row>
<el-form-item label="加分/扣除分值:"> <el-form-item label="加分/扣除分值:">
<p v-if="form.view == '查看'"> <p v-if="form.view == '查看'">
{{ form.score ? form.score : "--" }} {{form.subAddType==1?'+':'-'}} {{ form.score ? form.score : "--" }}
</p> </p>
<p v-else>{{ form.score }}</p> <p v-else>{{form.subAddType==1?'+':'-'}}{{ form.score }}</p>
</el-form-item> </el-form-item>
</el-row> </el-row>
</div> </div>
...@@ -368,10 +368,12 @@ export default { ...@@ -368,10 +368,12 @@ export default {
kaoqinCateArr: [], kaoqinCateArr: [],
kaoqinArr: [], kaoqinArr: [],
baseUrl: process.env.VUE_APP_API_BASE_URL + "/", baseUrl: process.env.VUE_APP_API_BASE_URL + "/",
urls:{saveUrl:'/check/attend/record/examine'}//重写核查地址
}; };
}, },
computed: {}, computed: {},
methods: { methods: {
// 审核
radioChange(val) { radioChange(val) {
console.log(val); console.log(val);
this.form.checkResult = val; this.form.checkResult = val;
......
...@@ -153,9 +153,9 @@ ...@@ -153,9 +153,9 @@
<el-row> <el-row>
<el-form-item label="加分/扣除分值:"> <el-form-item label="加分/扣除分值:">
<p v-if="form.view == '查看'"> <p v-if="form.view == '查看'">
{{ form.score ? form.score : "--" }} {{form.subAddType==1?'+':'-'}} {{ form.score ? form.score : "--" }}
</p> </p>
<p v-else>{{ form.score }}</p> <p v-else>{{form.subAddType==1?'+':'-'}} {{ form.score }}</p>
</el-form-item> </el-form-item>
</el-row> </el-row>
</div> </div>
...@@ -404,6 +404,7 @@ export default { ...@@ -404,6 +404,7 @@ export default {
kaoqinCateArr: [], kaoqinCateArr: [],
kaoqinArr: [], kaoqinArr: [],
baseUrl: process.env.VUE_APP_API_BASE_URL + "/", baseUrl: process.env.VUE_APP_API_BASE_URL + "/",
urls:{saveUrl:'/check/complain/record/examine'}//重写核查地址
}; };
}, },
......
...@@ -132,9 +132,9 @@ ...@@ -132,9 +132,9 @@
<el-row> <el-row>
<el-form-item label="加分/扣除分值:"> <el-form-item label="加分/扣除分值:">
<p v-if="form.view == '查看'"> <p v-if="form.view == '查看'">
{{ form.score ? form.score : "--" }} {{form.subAddType==1?'+':'-'}} {{ form.score ? form.score : "--" }}
</p> </p>
<p v-else>{{ form.score }}</p> <p v-else>{{form.subAddType==1?'+':'-'}} {{ form.score }}</p>
</el-form-item> </el-form-item>
</el-row> </el-row>
</div> </div>
...@@ -377,6 +377,7 @@ export default { ...@@ -377,6 +377,7 @@ export default {
kaoqinCateArr: [], kaoqinCateArr: [],
kaoqinArr: [], kaoqinArr: [],
baseUrl: process.env.VUE_APP_API_BASE_URL + "/", baseUrl: process.env.VUE_APP_API_BASE_URL + "/",
urls:{saveUrl:'/check/effect/record/examine'}//重写核查地址
}; };
}, },
......
...@@ -134,9 +134,9 @@ ...@@ -134,9 +134,9 @@
<el-row> <el-row>
<el-form-item label="加分/扣除分值:"> <el-form-item label="加分/扣除分值:">
<p v-if="form.view == '查看'"> <p v-if="form.view == '查看'">
{{ form.score ? form.score : "--" }} {{form.subAddType==1?'+':'-'}}{{ form.score ? form.score : "--" }}
</p> </p>
<p v-else>{{ form.score }}</p> <p v-else>{{form.subAddType==1?'+':'-'}}{{ form.score }}</p>
</el-form-item> </el-form-item>
</el-row> </el-row>
</div> </div>
...@@ -372,6 +372,7 @@ export default { ...@@ -372,6 +372,7 @@ export default {
kaoqinCateArr: [], kaoqinCateArr: [],
kaoqinArr: [], kaoqinArr: [],
baseUrl: process.env.VUE_APP_API_BASE_URL + "/", baseUrl: process.env.VUE_APP_API_BASE_URL + "/",
urls:{saveUrl:'/check/gowork/record/examine'}//重写核查地址
}; };
}, },
......
...@@ -128,9 +128,9 @@ ...@@ -128,9 +128,9 @@
<el-row> <el-row>
<el-form-item label="加分/扣除分值:"> <el-form-item label="加分/扣除分值:">
<p v-if="form.view == '查看'"> <p v-if="form.view == '查看'">
{{ form.score ? form.score : "--" }} {{form.subAddType==1?'+':'-'}}{{ form.score ? form.score : "--" }}
</p> </p>
<p v-else>{{ form.score }}</p> <p v-else>{{form.subAddType==1?'+':'-'}}{{ form.score }}</p>
</el-form-item> </el-form-item>
</el-row> </el-row>
</div> </div>
...@@ -367,6 +367,7 @@ export default { ...@@ -367,6 +367,7 @@ export default {
kaoqinCateArr: [], kaoqinCateArr: [],
kaoqinArr: [], kaoqinArr: [],
baseUrl: process.env.VUE_APP_API_BASE_URL + "/", baseUrl: process.env.VUE_APP_API_BASE_URL + "/",
urls:{saveUrl:'/check/other/record/examine'}//重写核查地址
}; };
}, },
......
...@@ -135,9 +135,9 @@ ...@@ -135,9 +135,9 @@
<el-row> <el-row>
<el-form-item label="加分/扣除分值:"> <el-form-item label="加分/扣除分值:">
<p v-if="form.view == '查看'"> <p v-if="form.view == '查看'">
{{ form.score ? form.score : "--" }} {{form.subAddType==1?'+':'-'}}{{ form.score ? form.score : "--" }}
</p> </p>
<p v-else>{{ form.score }}</p> <p v-else>{{form.subAddType==1?'+':'-'}}{{ form.score }}</p>
</el-form-item> </el-form-item>
</el-row> </el-row>
</div> </div>
...@@ -374,6 +374,7 @@ export default { ...@@ -374,6 +374,7 @@ export default {
form: {}, form: {},
kaoqinCateArr: [], kaoqinCateArr: [],
kaoqinArr: [], kaoqinArr: [],
urls:{saveUrl:'/check/review/record/examine'}//重写核查地址
}; };
}, },
......
...@@ -5,26 +5,39 @@ ...@@ -5,26 +5,39 @@
<div class="title"> <div class="title">
部门绩效总分排名TOP10 部门绩效总分排名TOP10
<div class="button_box"> <div class="button_box">
<span>今年</span> <span
<span class="check">本月</span> :class="{ check: v.value == depAttendanceTopDate }"
<span>今日</span> v-for="v in searchTimes"
:key="v.value"
@click="changeDate('depAttendanceTopDate', v.value)"
>{{ v.label }}</span
>
</div> </div>
</div> </div>
<dv-scroll-ranking-board <dv-scroll-ranking-board
:config="config" :config="config"
style="width:100%;height:75%" style="width: 100%; height: 75%"
/> />
</div> </div>
<div class="left_mid"> <div class="left_mid">
<div class="title">
异常分值分布情况
<div class="button_box"> <div class="button_box">
<span>今年</span> <span
<span class="check">本月</span> :class="{ check: v.value == abnormalDisDate }"
<span>今日</span> v-for="v in searchTimes"
:key="v.value"
@click="changeDate('abnormalDisDate', v.value)"
>{{ v.label }}</span
>
</div> </div>
<div id="leida" style="width: 100%;height: 100%;"></div> </div>
<div id="leida" style="width: 100%; height: 90%"></div>
</div> </div>
<div class="left_down"> <div class="left_down">
<div id="rulePie" style="width: 100%;height: 100%;"></div> <div class="title">绩效规则分布情况</div>
<div id="rulePie" style="width: 100%; height: 90%"></div>
</div> </div>
</div> </div>
<div class="mid"> <div class="mid">
...@@ -138,7 +151,7 @@ ...@@ -138,7 +151,7 @@
<div class="mid_down"> <div class="mid_down">
<div class="down_content"> <div class="down_content">
<img class="content_title" src="../../../assets/images/title.png" /> <img class="content_title" src="../../../assets/images/title.png" />
<div style="margin: 20px 0;"> <div style="margin: 20px 0">
<el-radio-group v-model="type" border> <el-radio-group v-model="type" border>
<el-radio-button label="1">部门评估</el-radio-button> <el-radio-button label="1">部门评估</el-radio-button>
<el-radio-button label="2">个人评估</el-radio-button> <el-radio-button label="2">个人评估</el-radio-button>
...@@ -150,7 +163,7 @@ ...@@ -150,7 +163,7 @@
<el-select <el-select
v-model="form.region" v-model="form.region"
placeholder="请选择部门" placeholder="请选择部门"
style="width: 100%;" style="width: 100%"
> >
<el-option label="区域一" value="shanghai"></el-option> <el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option> <el-option label="区域二" value="beijing"></el-option>
...@@ -161,21 +174,21 @@ ...@@ -161,21 +174,21 @@
type="date" type="date"
placeholder="选择日期" placeholder="选择日期"
v-model="form.date1" v-model="form.date1"
style="width: 100%;" style="width: 100%"
></el-date-picker> ></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="请选择类型:" style="text-align: left;"> <el-form-item label="请选择类型:" style="text-align: left">
<el-radio-group v-model="form.resource"> <el-radio-group v-model="form.resource">
<el-radio label="0">按年</el-radio> <el-radio :label="1">按年</el-radio>
<el-radio label="1">按月</el-radio> <el-radio :label="2">按月</el-radio>
<el-radio label="2">按天</el-radio> <el-radio :label="3">按天</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button <el-button
type="primary" type="primary"
@click="onSubmit" @click="onSubmit"
style="margin-top: 20px;transform: translateX(-50%);" style="margin-top: 20px; transform: translateX(-50%)"
>立即创建</el-button >立即创建</el-button
> >
</el-form-item> </el-form-item>
...@@ -187,28 +200,39 @@ ...@@ -187,28 +200,39 @@
<div class="right"> <div class="right">
<div class="right_top"> <div class="right_top">
<div class="button_box"> <div class="button_box">
<span>今年</span> <span
<span class="check">本月</span> :class="{ check: v.value == personageAttTopDate }"
<span>今日</span> v-for="v in searchTimes"
</div> :key="v.value"
<div class="title"> @click="changeDate('personageAttTopDate', v.value)"
个人绩效总分排名TOP10 >{{ v.label }}</span
>
</div> </div>
<div class="title">个人绩效总分排名TOP10</div>
<dv-scroll-ranking-board <dv-scroll-ranking-board
:config="personConfig" :config="personConfig"
style="width:100%;height:75%" style="width: 100%; height: 75%"
/> />
</div> </div>
<div class="right_mid"> <div class="right_mid">
<div class="title">
申诉分值分布情况
<div class="button_box"> <div class="button_box">
<span>今年</span> <span
<span class="check">本月</span> :class="{ check: v.value == appealDate }"
<span>今日</span> v-for="v in searchTimes"
:key="v.value"
@click="changeDate('appealDate', v.value)"
>{{ v.label }}</span
>
</div> </div>
<div id="shensuPie" style="width: 100%;height: 100%;"></div> </div>
<div id="shensuPie" style="width: 100%; height: 90%"></div>
</div> </div>
<div class="right_down"> <div class="right_down">
<div id="recordPie" style="width: 100%;height: 100%;"></div> <div class="title">反馈记录整体情况</div>
<div id="recordPie" style="width: 100%; height: 90%"></div>
</div> </div>
</div> </div>
</div> </div>
...@@ -218,96 +242,184 @@ ...@@ -218,96 +242,184 @@
export default { export default {
data() { data() {
return { return {
type: "1", // 时间搜索选项
searchTimes: [
{
label: "今年",
value: 1,
},
{
label: "本月",
value: 2,
},
{
label: "今日",
value: 3,
},
],
depAttendanceTopDate: 2, // 部门绩效top搜索
abnormalDisDate: 2, // 异常分值分布搜索
personageAttTopDate: 2, // 个人绩效排名top搜索
appealDate: 2, // 申诉分值分布搜索
form: { form: {
date1: "", date1: "",
type: [], type: [],
resource: "", resource: "",
}, },
config: {},//部门绩效总分top10 config: {}, //部门绩效总分top10
personConfig: {},//个人绩效总分top10 personConfig: {}, //个人绩效总分top10
cricleData: [
{ value: 756, name: "考勤绩效" },
{ value: 690, name: "评价绩效" },
{ value: 559, name: "办件绩效" },
{ value: 1278, name: "效能绩效" },
],
// 个人绩效总分排名 // 个人绩效总分排名
staffQuery:{ staffQuery: {
page:1, page: 1,
size:10, size: 10,
}, },
// 部门 // 部门
depQuery:{ depQuery: {
page:1, page: 1,
size:10, size: 10,
}, },
leidaEchart: null, // 异常分值分布情况echart实例
rulePie: null, // 绩效规则分布echart实例
shensuPie: null, // 申诉分值分布情况echart实例
recordPie: null, // 反馈记录整体情况echart实例
timer: null,
}; };
}, },
mounted() { mounted() {
this.drawLeiDa(); this.staffStatList();
this.drawRulePie(); this.getException();
this.drawCorePie(); this.depStatList();
this.drawRecordPie(); this.getAttendanceRules();
this.getFeedback();
this.staffStatList() this.autoUpdata();
this.depStatList() this.getAppealTotal();
}, },
methods: { methods: {
// 设配echarts
adapterEcharts() {
this.leidaEchart && this.leidaEchart.resize();
this.rulePie && this.rulePie.resize();
this.shensuPie && this.shensuPie.resize();
this.recordPie && this.recordPie.resize();
},
// 个人绩效总分排名 // 个人绩效总分排名
staffStatList(){ staffStatList() {
this.$post("/staff/perform/stat/list", this.staffQuery).then((res) => { this.$post("/staff/perform/stat/summary/top", {
const {code,data} = res summaryType: this.personageAttTopDate,
if(code == 1){ }).then((res) => {
const row = data.data || [] const { code, data } = res;
const depArr = [] if (code == 1) {
row.forEach(element => { const row = data.map((v) => {
depArr.push({ return {
name:element.staffName, name: v.staffName,
value:element.totalScore value: v.totalScore,
}) };
});
this.personConfig = { data: row };
}
});
},
// 获取异常分值分布情况
getException() {
this.$post("/staff/perform/stat/summary/exception", {
summaryType: this.abnormalDisDate,
}).then((res) => {
const { code, data } = res;
if (code == 1) {
let names = data.map((v) => v.name);
let add = data.map((v) => v.add);
let sub = data.map((v) => v.sub);
this.$nextTick(() => {
this.drawLeiDa(names, add, sub);
}); });
this.personConfig = {data:depArr}
console.log(row,"个人")
} }
}); });
}, },
// 部门绩效总分排名 // 部门绩效总分排名
depStatList(){ depStatList() {
this.$post("/dept/perform/stat/list", this.depQuery).then((res) => { this.$post("/dept/perform/stat/summary/top", {
const {code,data} = res summaryType: this.depAttendanceTopDate,
if(code == 1){ }).then((res) => {
const row = data.data || [] const { code, data } = res;
const depArr = [] if (code == 1) {
row.forEach(element => { const row = data.map((v) => {
depArr.push({ return {
name:element.deptName, name: v.deptName,
value:element.totalScore value: v.totalScore,
}) };
}); });
this.config = {data:depArr}
// console.log(row,depArr,"部门") this.config = { data: row };
} }
}); });
}, },
drawLeiDa() { // 获取绩效规则分布情况
// 基于dom,初始化echarts实例 getAttendanceRules() {
let myChart = this.$echarts.init(document.getElementById("leida")); this.$post("/perform/rules/summary").then((res) => {
// 绘制图表 const { code, data } = res;
myChart.setOption({ if (code == 1) {
title: { let { list, totalScore } = data;
text: "异常分值分布情况",
left: "left", let arr = list.map((v) => {
textStyle: { return {
fontSize: 18, name: v.typeName,
value: v.score,
};
});
this.$nextTick(() => {
this.drawRulePie(arr, totalScore);
});
}
});
},
// 获取反馈记录整体情况数据
getFeedback() {
this.$post("/feedback/summary").then((res) => {
const { code, data } = res;
if (code == 1) {
let { notStart, total, ended, progress } = data;
let names = ["未开始", "进行中", "已完结", "全部问卷"];
let values = [notStart, progress, ended, total];
this.$nextTick(() => {
this.drawRecordPie(names, values);
});
}
});
}, },
// 获取申诉分布情况统计数据
getAppealTotal() {
this.$post("/perform/attend/appeal/perform/summary", {
summaryType: this.appealDate,
}).then((res) => {
const { code, data } = res;
if (code == 1) {
console.log(res);
// this.$nextTick(() => {
// });
}
});
}, },
// 异常分值分布情况echarts
drawLeiDa(names = [], add = [], sub = []) {
// 基于dom,初始化echarts实例
let chartDom = document.getElementById("leida");
// 避免刷新数据时重新初始化图表
this.leidaEchart = this.$echarts.getInstanceByDom(chartDom);
if (!this.leidaEchart) {
this.leidaEchart = this.$echarts.init(chartDom);
}
// 绘制图表
this.leidaEchart.setOption({
color: ["#56A3F1", "#FF917C"], color: ["#56A3F1", "#FF917C"],
tooltip: {}, tooltip: {
confine: true,
},
legend: { legend: {
data: ["加分", "扣分"], data: names,
right: 0, right: 0,
bottom: "50px", bottom: "50px",
orient: "vertical", orient: "vertical",
...@@ -336,15 +448,14 @@ export default { ...@@ -336,15 +448,14 @@ export default {
}, },
}, },
{ {
indicator: [ indicator: names.map((v) => {
{ text: "考勤绩效", max: 150 }, return {
{ text: "办件绩效", max: 150 }, name: v,
{ text: "评价绩效", max: 150 }, max: 150,
{ text: "效能绩效", max: 120 }, };
{ text: "其他绩效", max: 108 }, }),
], center: ["45%", "50%"],
center: ["45%", "60%"], radius: "70%",
radius: 80,
axisName: { axisName: {
color: "#fff", color: "#fff",
backgroundColor: "#666", backgroundColor: "#666",
...@@ -359,20 +470,20 @@ export default { ...@@ -359,20 +470,20 @@ export default {
radarIndex: 1, radarIndex: 1,
data: [ data: [
{ {
value: [120, 118, 130, 100, 99, 70], value: add,
name: "加分", name: "加分",
symbol: "rect", symbol: "rect",
symbolSize: 12, symbolSize: 12,
areaStyle: { color: "#56A3F1" }, //雷达覆盖区域背景颜色 areaStyle: { color: "#56A3F1" }, //雷达覆盖区域背景颜色
label: { label: {
show: true, show: true,
formatter: function(params) { formatter: function (params) {
return params.value; return params.value;
}, },
}, },
}, },
{ {
value: [100, 93, 50, 90, 70, 60], value: sub,
areaStyle: { color: "#FF917C" }, //雷达覆盖区域背景颜色 areaStyle: { color: "#FF917C" }, //雷达覆盖区域背景颜色
name: "扣分", name: "扣分",
}, },
...@@ -380,17 +491,18 @@ export default { ...@@ -380,17 +491,18 @@ export default {
}, },
], ],
}); });
window.addEventListener("resize", this.adapterEcharts);
}, },
drawRulePie() { // 绩效规则分布echarts
drawRulePie(data, total) {
// 基于dom,初始化echarts实例 // 基于dom,初始化echarts实例
let myChart = this.$echarts.init(document.getElementById("rulePie")); let chartDom = document.getElementById("rulePie");
myChart.setOption({ // 避免刷新数据时重新初始化图表
title: { this.rulePie = this.$echarts.getInstanceByDom(chartDom);
text: "绩效规则分布情况", if (!this.rulePie) {
textStyle: { this.rulePie = this.$echarts.init(chartDom);
fontSize: 18, }
}, this.rulePie.setOption({
},
tooltip: { tooltip: {
trigger: "item", trigger: "item",
}, },
...@@ -427,14 +539,10 @@ export default { ...@@ -427,14 +539,10 @@ export default {
}, },
}, },
formatter: (name) => { formatter: (name) => {
// formatter格式化函数动态呈现数据
console.log(name);
var total = 0; // 用于计算总数
var target; // 遍历拿到数据 var target; // 遍历拿到数据
for (var i = 0; i < this.cricleData.length; i++) { for (var i = 0; i < data.length; i++) {
total += this.cricleData[i].value; if (data[i].name == name) {
if (this.cricleData[i].name == name) { target = data[i].value;
target = this.cricleData[i].value;
} }
} }
var v = ((target / total) * 100).toFixed(2); var v = ((target / total) * 100).toFixed(2);
...@@ -447,34 +555,33 @@ export default { ...@@ -447,34 +555,33 @@ export default {
type: "pie", type: "pie",
radius: ["40%", "70%"], radius: ["40%", "70%"],
// avoidLabelOverlap: false, // avoidLabelOverlap: false,
data,
left: "-50%", left: "-50%",
top: "10%", top: "10%",
label: { label: {
position: "center", position: "center",
fontSize: 16, fontSize: 16,
formatter: () => { formatter: () => {
let str = "" + "\n" + `${756 + 690 + 559 + 1278}`; return "" + "\n" + total;
return str;
}, },
}, },
labelLine: { labelLine: {
show: false, show: false,
}, },
data: this.cricleData,
}, },
], ],
}); });
window.addEventListener("resize", this.adapterEcharts);
}, },
// 申诉分值分布情况echarts
drawCorePie() { drawCorePie() {
// 基于dom,初始化echarts实例 let chartDom = document.getElementById("shensuPie");
let myChart = this.$echarts.init(document.getElementById("shensuPie")); // 避免刷新数据时重新初始化图表
myChart.setOption({ this.shensuPie = this.$echarts.getInstanceByDom(chartDom);
title: { if (!this.shensuPie) {
text: "绩效规则分布情况", this.shensuPie = this.$echarts.init(chartDom);
textStyle: { }
fontSize: 18, this.shensuPie.setOption({
},
},
tooltip: { tooltip: {
trigger: "item", trigger: "item",
}, },
...@@ -564,34 +671,28 @@ export default { ...@@ -564,34 +671,28 @@ export default {
}, },
], ],
}); });
window.addEventListener("resize", this.adapterEcharts);
}, },
// 反馈记录整体情况echarts
drawRecordPie() { drawRecordPie(names = [], values = []) {
let xData = ["未开始", "进行中", "已完结", "全部问卷"];
let yData = [2, 8, 116, 126];
let colorList = ["#97e7ff", "#75f5ff", "#00deff", "#0093ff", "#2a5fcf"]; let colorList = ["#97e7ff", "#75f5ff", "#00deff", "#0093ff", "#2a5fcf"];
let visualMapPiecesData = []; let visualMapPiecesData = [];
// visualMap: { for (var i = 0; i < names.length; i++) {
// pieces: [
// { value: 123, label: '123(自定义特殊颜色)', color: 'grey' }
// ]
// }
for (var i = 0; i < xData.length; i++) {
visualMapPiecesData.push({ visualMapPiecesData.push({
value: yData[i], value: values[i],
label: xData[i], label: names[i],
color: colorList[i], color: colorList[i],
}); });
} }
// 基于dom,初始化echarts实例 // 基于dom,初始化echarts实例
let myChart = this.$echarts.init(document.getElementById("recordPie")); let chartDom = document.getElementById("recordPie");
myChart.setOption({ // 避免刷新数据时重新初始化图表
title: { this.recordPie = this.$echarts.getInstanceByDom(chartDom);
text: "绩效规则分布情况", if (!this.recordPie) {
textStyle: { this.recordPie = this.$echarts.init(chartDom);
fontSize: 18, }
},
}, this.recordPie.setOption({
tooltip: { tooltip: {
trigger: "item", trigger: "item",
}, },
...@@ -608,7 +709,7 @@ export default { ...@@ -608,7 +709,7 @@ export default {
radiusAxis: { radiusAxis: {
show: true, show: true,
type: "category", type: "category",
data: xData, data: names,
}, },
visualMap: { visualMap: {
...@@ -626,12 +727,12 @@ export default { ...@@ -626,12 +727,12 @@ export default {
series: [ series: [
{ {
type: "bar", type: "bar",
data: yData, data: values,
coordinateSystem: "polar", coordinateSystem: "polar",
itemStyle: { itemStyle: {
normal: { normal: {
// 定制显示(按顺序) // 定制显示(按顺序)
color: function(params) { color: function (params) {
return colorList[params.dataIndex]; return colorList[params.dataIndex];
}, },
}, },
...@@ -639,7 +740,56 @@ export default { ...@@ -639,7 +740,56 @@ export default {
}, },
], ],
}); });
window.addEventListener("resize", this.adapterEcharts);
},
// 改变日期搜索
changeDate(type, date) {
switch (type) {
case "depAttendanceTopDate":
this.depAttendanceTopDate = date;
this.depStatList();
break;
case "abnormalDisDate":
this.abnormalDisDate = date;
this.getException();
break;
case "personageAttTopDate":
this.personageAttTopDate = date;
this.staffStatList();
break;
case "appealDate":
this.appealDate = date;
break;
}
}, },
// 获取年
getYear() {
return new Date().getFullYear();
},
// 获取月
getMonth() {
return new Date().getMonth() + 1;
},
// 获取日
getDay() {
return new Date().getDate();
},
// 1分值自动刷新数据
autoUpdata() {
this.timer = setInterval(() => {
this.staffStatList();
this.getException();
this.depStatList();
this.getAttendanceRules();
this.getFeedback();
}, 1000 * 60);
},
},
beforeDestroy() {
// 解绑事件
window.removeEventListener("resize", this.adapterEcharts);
clearInterval(this.timer);
}, },
}; };
</script> </script>
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -4,6 +4,7 @@ import com.mortals.framework.dao.ICRUDDao; ...@@ -4,6 +4,7 @@ import com.mortals.framework.dao.ICRUDDao;
import com.mortals.framework.model.PageInfo; import com.mortals.framework.model.PageInfo;
import com.mortals.xhx.module.perform.model.PerformAttendAppealEntity; import com.mortals.xhx.module.perform.model.PerformAttendAppealEntity;
import com.mortals.xhx.module.perform.model.vo.AppealInfo; import com.mortals.xhx.module.perform.model.vo.AppealInfo;
import com.mortals.xhx.module.perform.model.vo.AppealSummaryQuery;
import java.util.List; import java.util.List;
/** /**
...@@ -19,4 +20,11 @@ public interface PerformAttendAppealDao extends ICRUDDao<PerformAttendAppealEnt ...@@ -19,4 +20,11 @@ public interface PerformAttendAppealDao extends ICRUDDao<PerformAttendAppealEnt
String SQLID_GET_STATLIST = "getStatList"; String SQLID_GET_STATLIST = "getStatList";
List<AppealInfo> getStatList(PerformAttendAppealEntity query, PageInfo pageInfo); List<AppealInfo> getStatList(PerformAttendAppealEntity query, PageInfo pageInfo);
/**
* 申述分布情况统计
* @param query
* @return
*/
List<PerformAttendAppealEntity> getAppealSummaryList(AppealSummaryQuery query);
} }
...@@ -4,6 +4,7 @@ package com.mortals.xhx.module.perform.dao.ibatis; ...@@ -4,6 +4,7 @@ package com.mortals.xhx.module.perform.dao.ibatis;
import com.mortals.framework.model.PageInfo; import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.ParamDto; import com.mortals.framework.model.ParamDto;
import com.mortals.xhx.module.perform.model.vo.AppealInfo; import com.mortals.xhx.module.perform.model.vo.AppealInfo;
import com.mortals.xhx.module.perform.model.vo.AppealSummaryQuery;
import org.apache.ibatis.session.RowBounds; import org.apache.ibatis.session.RowBounds;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import com.mortals.xhx.module.perform.dao.PerformAttendAppealDao; import com.mortals.xhx.module.perform.dao.PerformAttendAppealDao;
...@@ -31,4 +32,9 @@ public class PerformAttendAppealDaoImpl extends BaseCRUDDaoMybatis<PerformAttend ...@@ -31,4 +32,9 @@ public class PerformAttendAppealDaoImpl extends BaseCRUDDaoMybatis<PerformAttend
return getSqlSession().selectList(SQLID_GET_STATLIST, queryParam, rowBounds); return getSqlSession().selectList(SQLID_GET_STATLIST, queryParam, rowBounds);
} }
} }
@Override
public List<PerformAttendAppealEntity> getAppealSummaryList(AppealSummaryQuery query) {
return getSqlSession().selectList(getSqlId("getAppealSummaryList"),query);
}
} }
package com.mortals.xhx.module.perform.model.vo;
import lombok.Data;
/**
* 申述分布情况统计
*/
@Data
public class AppealSummaryQuery {
/** 汇总方式 1按年,2按月,3按天*/
private Integer summaryType;
/** 开始 核查时间 */
private String checkTimeStart;
/** 结束 核查时间 */
private String checkTimeEnd;
}
...@@ -6,6 +6,7 @@ import com.mortals.framework.service.ICRUDService; ...@@ -6,6 +6,7 @@ import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.perform.model.PerformAttendAppealEntity; import com.mortals.xhx.module.perform.model.PerformAttendAppealEntity;
import com.mortals.xhx.module.perform.dao.PerformAttendAppealDao; import com.mortals.xhx.module.perform.dao.PerformAttendAppealDao;
import com.mortals.xhx.module.perform.model.vo.AppealInfo; import com.mortals.xhx.module.perform.model.vo.AppealInfo;
import com.mortals.xhx.module.perform.model.vo.AppealSummaryQuery;
import java.util.List; import java.util.List;
...@@ -26,4 +27,10 @@ public interface PerformAttendAppealService extends ICRUDService<PerformAttendAp ...@@ -26,4 +27,10 @@ public interface PerformAttendAppealService extends ICRUDService<PerformAttendAp
Rest<List<AppealInfo>> stat(PerformAttendAppealEntity appeal, Context context); Rest<List<AppealInfo>> stat(PerformAttendAppealEntity appeal, Context context);
/**
* 申述分布情况统计
* @param query
* @return
*/
List<PerformAttendAppealEntity> getAppealSummaryList(AppealSummaryQuery query);
} }
\ No newline at end of file
...@@ -2,34 +2,34 @@ package com.mortals.xhx.module.perform.service.impl; ...@@ -2,34 +2,34 @@ package com.mortals.xhx.module.perform.service.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.mortals.framework.common.Rest; import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.model.OrderCol; import com.mortals.framework.model.OrderCol;
import com.mortals.framework.model.PageInfo; import com.mortals.framework.model.PageInfo;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.util.DateUtils;
import com.mortals.xhx.common.code.*; import com.mortals.xhx.common.code.*;
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.*;
import com.mortals.xhx.module.perform.model.PerformAttendAppealQuery;
import com.mortals.xhx.module.perform.model.vo.AppealInfo;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.xhx.module.perform.dao.PerformAttendAppealDao; import com.mortals.xhx.module.perform.dao.PerformAttendAppealDao;
import com.mortals.xhx.module.perform.model.PerformAttendAppealEntity; import com.mortals.xhx.module.perform.model.PerformAttendAppealEntity;
import com.mortals.xhx.module.perform.service.PerformAttendAppealService;
import org.springframework.beans.factory.annotation.Autowired;
import com.mortals.xhx.module.perform.model.PerformAttendAppealFilesEntity; import com.mortals.xhx.module.perform.model.PerformAttendAppealFilesEntity;
import com.mortals.xhx.module.perform.model.PerformAttendAppealFilesQuery; import com.mortals.xhx.module.perform.model.PerformAttendAppealFilesQuery;
import com.mortals.xhx.module.perform.model.PerformAttendAppealQuery;
import com.mortals.xhx.module.perform.model.vo.AppealInfo;
import com.mortals.xhx.module.perform.model.vo.AppealSummaryQuery;
import com.mortals.xhx.module.perform.service.PerformAttendAppealFilesService; import com.mortals.xhx.module.perform.service.PerformAttendAppealFilesService;
import com.mortals.xhx.module.perform.service.PerformAttendAppealService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import java.util.Date;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date;
import java.util.List; import java.util.List;
import lombok.extern.slf4j.Slf4j;
/** /**
* PerformAttendAppealService * PerformAttendAppealService
* 绩效记录申诉信息 service实现 * 绩效记录申诉信息 service实现
...@@ -176,6 +176,25 @@ public class PerformAttendAppealServiceImpl extends AbstractCRUDServiceImpl<Perf ...@@ -176,6 +176,25 @@ public class PerformAttendAppealServiceImpl extends AbstractCRUDServiceImpl<Perf
return Rest.ok(statList); return Rest.ok(statList);
} }
@Override
public List<PerformAttendAppealEntity> getAppealSummaryList(AppealSummaryQuery query) {
if (query == null) {
query = new AppealSummaryQuery();
query.setSummaryType(SummaryTopTypeEnum..getValue());
}
if (query.getSummaryType() == SummaryTopTypeEnum..getValue()) {
query.setCheckTimeStart(DateUtils.getCurrDateTime("yyyy")+"-01-01");
}
if (query.getSummaryType() == SummaryTopTypeEnum..getValue()) {
query.setCheckTimeStart(DateUtils.getCurrDateTime("yyyy-MM")+"-01");
}
if (query.getSummaryType() == SummaryTopTypeEnum..getValue()) {
query.setCheckTimeStart(DateUtils.getCurrStrDate());
}
query.setCheckTimeEnd(DateUtils.getCurrStrDate());
return dao.getAppealSummaryList(query);
}
@Override @Override
protected void saveAfter(PerformAttendAppealEntity entity, Context context) throws AppException { protected void saveAfter(PerformAttendAppealEntity entity, Context context) throws AppException {
......
package com.mortals.xhx.module.perform.web; package com.mortals.xhx.module.perform.web;
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.framework.exception.AppException;
import com.mortals.framework.model.OrderCol; import com.mortals.framework.model.OrderCol;
import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService; import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.common.code.EnabledEnum; import com.mortals.xhx.common.code.EnabledEnum;
import com.mortals.xhx.common.code.YesNoEnum; import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.module.perform.model.vo.AppealInfo; import com.mortals.xhx.module.perform.model.vo.AppealInfo;
import com.mortals.xhx.module.perform.model.vo.AppealSummaryQuery;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -125,5 +129,44 @@ public class PerformAttendAppealController extends BaseCRUDJsonBodyMappingContro ...@@ -125,5 +129,44 @@ public class PerformAttendAppealController extends BaseCRUDJsonBodyMappingContro
return jsonObject.toJSONString(); return jsonObject.toJSONString();
} }
/**
* 申述分布情况统计
* @param query
* @return
*/
@PostMapping({"perform/summary"})
@UnAuth
public Rest<Object> getAppealSummaryList(@RequestBody AppealSummaryQuery query) {
Rest<Object> ret = new Rest();
Map<String, Object> model = new HashMap();
Context context = this.getContext();
String busiDesc = "查询申述分布情况统计";
int code = 1;
try {
List<PerformAttendAppealEntity> result = this.getService().getAppealSummaryList(query);
Map<String,String> dict = new HashMap<>();
//attend:考勤绩效,review:评价差评绩效,complain:评价投诉绩效,gowork:办件绩效,effect:效能绩效,other:其它绩效
dict.put("attend","考勤绩效");
dict.put("review","评价差评绩效");
dict.put("complain","评价投诉绩效");
dict.put("gowork","办件绩效");
dict.put("effect","效能绩效");
dict.put("other","其它绩效");
this.addDict(model,"performType",dict);
model.put("data", result);
model.put("message_info", busiDesc + "成功");
if (!ObjectUtils.isEmpty(context) && !ObjectUtils.isEmpty(context.getUser())) {
this.recordSysLog(this.request, busiDesc + " 【成功】");
}
} catch (Exception var9) {
code = -1;
this.doException(this.request, busiDesc, model, var9);
}
ret.setCode(code);
ret.setData(model);
ret.setDict(model.remove("dict"));
ret.setMsg(model.get("message_info") == null ? "" : model.remove("message_info").toString());
return ret;
}
} }
\ No newline at end of file
...@@ -33,4 +33,22 @@ public interface StaffPerformStatDao extends ICRUDDao<StaffPerformStatEntity,Lo ...@@ -33,4 +33,22 @@ public interface StaffPerformStatDao extends ICRUDDao<StaffPerformStatEntity,Lo
* @return * @return
*/ */
List<StaffPerformStatEntity> getYearSummaryList(StaffSummaryTopQuery query); List<StaffPerformStatEntity> getYearSummaryList(StaffSummaryTopQuery query);
/**
* 按天异常分值统计
* @param query
* @return
*/
List<StaffPerformStatEntity> getDayExceptionList(StaffSummaryTopQuery query);
/**
* 按月异常分值统计
* @param query
* @return
*/
List<StaffPerformStatEntity> getMonthExceptionList(StaffSummaryTopQuery query);
/**
* 按年异常分值统计
* @param query
* @return
*/
List<StaffPerformStatEntity> getYearExceptionList(StaffSummaryTopQuery query);
} }
...@@ -32,4 +32,19 @@ public class StaffPerformStatDaoImpl extends BaseCRUDDaoMybatis<StaffPerformStat ...@@ -32,4 +32,19 @@ public class StaffPerformStatDaoImpl extends BaseCRUDDaoMybatis<StaffPerformStat
public List<StaffPerformStatEntity> getYearSummaryList(StaffSummaryTopQuery query) { public List<StaffPerformStatEntity> getYearSummaryList(StaffSummaryTopQuery query) {
return this.getSqlSession().selectList(this.getSqlId("getYearSummaryList"), query); return this.getSqlSession().selectList(this.getSqlId("getYearSummaryList"), query);
} }
@Override
public List<StaffPerformStatEntity> getDayExceptionList(StaffSummaryTopQuery query) {
return this.getSqlSession().selectList(this.getSqlId("getDayExceptionList"), query);
}
@Override
public List<StaffPerformStatEntity> getMonthExceptionList(StaffSummaryTopQuery query) {
return this.getSqlSession().selectList(this.getSqlId("getMonthExceptionList"), query);
}
@Override
public List<StaffPerformStatEntity> getYearExceptionList(StaffSummaryTopQuery query) {
return this.getSqlSession().selectList(this.getSqlId("getYearExceptionList"), query);
}
} }
...@@ -25,4 +25,11 @@ public interface StaffPerformStatService extends ICRUDService<StaffPerformStatEn ...@@ -25,4 +25,11 @@ public interface StaffPerformStatService extends ICRUDService<StaffPerformStatEn
* @return * @return
*/ */
List<StaffPerformStatEntity> getSummaryTopList(StaffSummaryTopQuery query) throws AppException; List<StaffPerformStatEntity> getSummaryTopList(StaffSummaryTopQuery query) throws AppException;
/**
* 获取异常分值统计
* @param query
* @return
*/
List<StaffPerformStatEntity> getExceptionList(StaffSummaryTopQuery query) throws AppException;
} }
\ No newline at end of file
...@@ -62,4 +62,42 @@ public class StaffPerformStatServiceImpl extends AbstractCRUDServiceImpl<StaffPe ...@@ -62,4 +62,42 @@ public class StaffPerformStatServiceImpl extends AbstractCRUDServiceImpl<StaffPe
return result; return result;
} }
@Override
public List<StaffPerformStatEntity> getExceptionList(StaffSummaryTopQuery query) throws AppException {
LocalDate now = LocalDate.now();
List<StaffPerformStatEntity> result = null;
if(query == null){
query = new StaffSummaryTopQuery();
query.setSummaryType(SummaryTopTypeEnum..getValue());
}
if(query.getSummaryType() == SummaryTopTypeEnum..getValue()){
if(query.getYear()==null){
query.setYear(now.getYear());
}
result = dao.getYearExceptionList(query);
}
if(query.getSummaryType() == SummaryTopTypeEnum..getValue()){
if(query.getYear()==null){
query.setYear(now.getYear());
}
if(query.getMonth()==null){
query.setMonth(now.getMonthValue());
}
result = dao.getMonthExceptionList(query);
}
if(query.getSummaryType() == SummaryTopTypeEnum..getValue()){
if(query.getYear()==null){
query.setYear(now.getYear());
}
if(query.getMonth()==null){
query.setMonth(now.getMonthValue());
}
if(query.getDay()==null){
query.setDay(now.getDayOfMonth());
}
result = dao.getDayExceptionList(query);
}
return result;
}
} }
\ No newline at end of file
package com.mortals.xhx.module.staff.web; package com.mortals.xhx.module.staff.web;
import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.annotation.UnAuth; import com.mortals.framework.annotation.UnAuth;
import com.mortals.framework.common.Rest; import com.mortals.framework.common.Rest;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
...@@ -8,6 +9,7 @@ import com.mortals.xhx.base.system.param.service.ParamService; ...@@ -8,6 +9,7 @@ import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.module.staff.model.StaffPerformStatEntity; import com.mortals.xhx.module.staff.model.StaffPerformStatEntity;
import com.mortals.xhx.module.staff.model.vo.StaffSummaryTopQuery; import com.mortals.xhx.module.staff.model.vo.StaffSummaryTopQuery;
import com.mortals.xhx.module.staff.service.StaffPerformStatService; import com.mortals.xhx.module.staff.service.StaffPerformStatService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
...@@ -15,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -15,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -44,7 +47,7 @@ public class StaffPerformStatController extends BaseCRUDJsonBodyMappingControlle ...@@ -44,7 +47,7 @@ public class StaffPerformStatController extends BaseCRUDJsonBodyMappingControlle
} }
/** /**
* 部门绩效排行榜 * 个人绩效排行榜
* @param query * @param query
* @return * @return
*/ */
...@@ -74,4 +77,69 @@ public class StaffPerformStatController extends BaseCRUDJsonBodyMappingControlle ...@@ -74,4 +77,69 @@ public class StaffPerformStatController extends BaseCRUDJsonBodyMappingControlle
return ret; return ret;
} }
/**
* 异常分值统计
* @param query
* @return
*/
@PostMapping({"summary/exception"})
@UnAuth
public Rest<Object> getExceptionList(@RequestBody StaffSummaryTopQuery query) {
Rest<Object> ret = new Rest();
Map<String, Object> model = new HashMap();
Context context = this.getContext();
String busiDesc = "查询异常分值统计";
int code = 1;
try {
List<StaffPerformStatEntity> result = this.getService().getExceptionList(query);
List<JSONObject> data = new ArrayList<>();
if(CollectionUtils.isNotEmpty(result)) {
StaffPerformStatEntity entity = result.get(0);
JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("name", "考勤绩效");
jsonObject1.put("add", entity.getAttendScoreAdd());
jsonObject1.put("sub", entity.getAttendScoreSub());
data.add(jsonObject1);
JSONObject jsonObject2 = new JSONObject();
jsonObject2.put("name", "评价绩效");
jsonObject2.put("add", entity.getReviewScoreAdd());
jsonObject2.put("sub", entity.getReviewScoreSub());
data.add(jsonObject2);
JSONObject jsonObject3 = new JSONObject();
jsonObject3.put("name", "投诉绩效");
jsonObject3.put("add", entity.getComplainScoreAdd());
jsonObject3.put("sub", entity.getComplainScoreSub());
data.add(jsonObject3);
JSONObject jsonObject4 = new JSONObject();
jsonObject4.put("name", "办件绩效");
jsonObject4.put("add", entity.getGoworkScoreAdd());
jsonObject4.put("sub", entity.getGoworkScoreSub());
data.add(jsonObject4);
JSONObject jsonObject5 = new JSONObject();
jsonObject5.put("name", "效能绩效");
jsonObject5.put("add", entity.getEffectScoreAdd());
jsonObject5.put("sub", entity.getEffectScoreSub());
data.add(jsonObject5);
JSONObject jsonObject6 = new JSONObject();
jsonObject6.put("name", "其它绩效");
jsonObject6.put("add", entity.getOtherScoreAdd());
jsonObject6.put("sub", entity.getOtherScoreSub());
data.add(jsonObject6);
}
model.put("data", data);
model.put("message_info", busiDesc + "成功");
if (!ObjectUtils.isEmpty(context) && !ObjectUtils.isEmpty(context.getUser())) {
this.recordSysLog(this.request, busiDesc + " 【成功】");
}
} catch (Exception var9) {
code = -1;
this.doException(this.request, busiDesc, model, var9);
}
this.init(model, context);
ret.setCode(code);
ret.setData(model.get("data"));
ret.setMsg(model.get("message_info") == null ? "" : model.remove("message_info").toString());
return ret;
}
} }
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"mybatis-3-mapper.dtd">
<mapper namespace="com.mortals.xhx.module.perform.dao.ibatis.PerformAttendAppealDaoImpl">
<!-- 申述分布情况统计 -->
<select id="getAppealSummaryList" parameterType="com.mortals.xhx.module.perform.model.vo.AppealSummaryQuery" resultType="com.mortals.xhx.module.perform.model.PerformAttendAppealEntity">
SELECT
performType,
SUM(score) AS score
FROM
mortals_xhx_perform_attend_appeal
WHERE
processStatus = 2
AND appealResult = 1
<if test="checkTimeStart != null and checkTimeStart!=''"> AND checkTime <![CDATA[ >= ]]> STR_TO_DATE(left(concat(#{checkTimeStart},' 00:00:00'),19),'%Y-%m-%d %k:%i:%s') </if>
<if test="checkTimeEnd != null and checkTimeEnd!=''"> AND checkTime <![CDATA[ <= ]]> STR_TO_DATE(left(concat(#{checkTimeEnd},' 23:59:59'),19),'%Y-%m-%d %k:%i:%s') </if>
GROUP BY
performType
</select>
</mapper>
\ No newline at end of file
...@@ -76,4 +76,98 @@ ...@@ -76,4 +76,98 @@
`year` `year`
) AS a ORDER BY totalScore DESC LIMIT 10 ) AS a ORDER BY totalScore DESC LIMIT 10
</select> </select>
<!-- 按天异常分值统计 -->
<select id="getDayExceptionList" parameterType="com.mortals.xhx.module.staff.model.vo.StaffSummaryTopQuery" resultType="com.mortals.xhx.module.staff.model.StaffPerformStatEntity">
SELECT
`year`,
`month`,
`day`,
SUM(attendScoreAdd) AS attendScoreAdd,
SUM(attendScoreSub) AS attendScoreSub,
SUM(reviewScoreAdd) AS reviewScoreAdd,
SUM(reviewScoreSub) AS reviewScoreSub,
SUM(complainScoreAdd) AS complainScoreAdd,
SUM(complainScoreSub) AS complainScoreSub,
SUM(goworkScoreAdd) AS goworkScoreAdd,
SUM(goworkScoreSub) AS goworkScoreSub,
SUM(effectScoreAdd) AS effectScoreAdd,
SUM(effectScoreSub) AS effectScoreSub,
SUM(otherScoreAdd) AS otherScoreAdd,
SUM(otherScoreSub) AS otherScoreSub
FROM
mortals_xhx_staff_perform_stat
WHERE 1=1
<if test="year != null">
AND `year` = #{year}
</if>
<if test="month != null">
AND `month` = #{month}
</if>
<if test="day != null">
AND `day` = #{day}
</if>
GROUP BY
`year`,
`month`,
`day`
</select>
<!-- 按月异常分值统计 -->
<select id="getMonthExceptionList" parameterType="com.mortals.xhx.module.staff.model.vo.StaffSummaryTopQuery" resultType="com.mortals.xhx.module.staff.model.StaffPerformStatEntity">
SELECT
`year`,
`month`,
SUM(attendScoreAdd) AS attendScoreAdd,
SUM(attendScoreSub) AS attendScoreSub,
SUM(reviewScoreAdd) AS reviewScoreAdd,
SUM(reviewScoreSub) AS reviewScoreSub,
SUM(complainScoreAdd) AS complainScoreAdd,
SUM(complainScoreSub) AS complainScoreSub,
SUM(goworkScoreAdd) AS goworkScoreAdd,
SUM(goworkScoreSub) AS goworkScoreSub,
SUM(effectScoreAdd) AS effectScoreAdd,
SUM(effectScoreSub) AS effectScoreSub,
SUM(otherScoreAdd) AS otherScoreAdd,
SUM(otherScoreSub) AS otherScoreSub
FROM
mortals_xhx_staff_perform_stat
WHERE 1=1
<if test="year != null">
AND `year` = #{year}
</if>
<if test="month != null">
AND `month` = #{month}
</if>
GROUP BY
`year`,
`month`
</select>
<!-- 按年异常分值统计 -->
<select id="getYearExceptionList" parameterType="com.mortals.xhx.module.staff.model.vo.StaffSummaryTopQuery" resultType="com.mortals.xhx.module.staff.model.StaffPerformStatEntity">
SELECT
`year`,
SUM(attendScoreAdd) AS attendScoreAdd,
SUM(attendScoreSub) AS attendScoreSub,
SUM(reviewScoreAdd) AS reviewScoreAdd,
SUM(reviewScoreSub) AS reviewScoreSub,
SUM(complainScoreAdd) AS complainScoreAdd,
SUM(complainScoreSub) AS complainScoreSub,
SUM(goworkScoreAdd) AS goworkScoreAdd,
SUM(goworkScoreSub) AS goworkScoreSub,
SUM(effectScoreAdd) AS effectScoreAdd,
SUM(effectScoreSub) AS effectScoreSub,
SUM(otherScoreAdd) AS otherScoreAdd,
SUM(otherScoreSub) AS otherScoreSub
FROM
mortals_xhx_staff_perform_stat
WHERE 1=1
<if test="year != null">
AND `year` = #{year}
</if>
GROUP BY
`year`
</select>
</mapper> </mapper>
\ No newline at end of file
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