Commit 61669359 authored by 廖旭伟's avatar 廖旭伟

Merge remote-tracking branch 'origin/master'

parents 165c662d 40f95244
...@@ -35,13 +35,13 @@ ...@@ -35,13 +35,13 @@
</ul> </ul>
</div> </div>
<div class="controllBar"> <!-- <div class="controllBar">
<el-badge :value="12" class="item"> <el-badge :value="12" class="item">
<i class="el-icon-bell" style="font-size: 15px;margin-right: 10px"> <i class="el-icon-bell" style="font-size: 15px;margin-right: 10px">
消息</i 消息</i
> >
</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
......
...@@ -39,6 +39,16 @@ ...@@ -39,6 +39,16 @@
>核查</el-button >核查</el-button
> >
<span>&nbsp;</span> <span>&nbsp;</span>
<el-button
v-if="chuli"
type="text"
icon="el-icon-edit"
size="mini"
@click="$emit('edit', row)"
title="处理"
>处理</el-button
>
<span>&nbsp;</span>
<Confirm @confirm="$emit('del', row.id)" message="确定要删除该条记录吗?"> <Confirm @confirm="$emit('del', row.id)" message="确定要删除该条记录吗?">
<el-button <el-button
v-if="!noDel" v-if="!noDel"
...@@ -72,6 +82,10 @@ export default { ...@@ -72,6 +82,10 @@ export default {
type: Boolean, type: Boolean,
default: false, default: false,
}, },
chuli: {
type: Boolean,
default: false,
},
switchBtn: { switchBtn: {
type: Boolean, type: Boolean,
default: false, default: false,
......
...@@ -260,11 +260,11 @@ export default { ...@@ -260,11 +260,11 @@ export default {
i.remark = i.field i.remark = i.field
i.questionType = formType(i.type) i.questionType = formType(i.type)
i.require = formatNum(i.$required) i.require = formatNum(i.$required)
i.content = i.info || '' i.content = i.title
if (formType(i.type) == 1 || formType(i.type) == 2) { if (formType(i.type) == 1 || formType(i.type) == 2) {
i.options.forEach(j => { i.options.forEach(j => {
j.content = j.value j.content = j.label
j.remark = j.label j.remark = j.value
}) })
} }
if (formType(i.type) == 1 || formType(i.type) == 2) { if (formType(i.type) == 1 || formType(i.type) == 2) {
......
...@@ -50,7 +50,9 @@ ...@@ -50,7 +50,9 @@
}}</el-col }}</el-col
> >
<el-col :span="9" <el-col :span="9"
>异常结果:{{ form.errorTime ? form.errorTime : "--" }}</el-col >异常结果:{{
form.errorResult ? form.errorResult : "--"
}}</el-col
> >
<el-col :span="5" <el-col :span="5"
>扣分方式:{{ form.subMethod ? form.subMethod : "--" }}</el-col >扣分方式:{{ form.subMethod ? form.subMethod : "--" }}</el-col
...@@ -81,7 +83,9 @@ ...@@ -81,7 +83,9 @@
>绩效规则:{{ form.ruleName ? form.ruleName : "--" }}</el-col >绩效规则:{{ form.ruleName ? form.ruleName : "--" }}</el-col
> >
<el-col :span="8" <el-col :span="8"
>加分/扣除分值:{{ form.score ? form.score : "--" }}</el-col >加分/扣除分值:<span style="color:#ff0000">{{
form.score ? form.score : "--"
}}</span></el-col
> >
</el-row> </el-row>
<el-row> <el-row>
...@@ -104,20 +108,78 @@ ...@@ -104,20 +108,78 @@
<div class="content"> <div class="content">
<el-row> <el-row>
<el-col :span="24" <el-col :span="24"
>申诉说明:{{ >申诉说明:{{ form.appealDesc ? form.appealDesc : "--" }}</el-col
form.appealDesc ? form.appealDesc : "--"
}}</el-col
> >
<el-col :span="24" <el-col :span="24"
>申诉时间:{{ form.appealTime ? form.appealTime : "--" }}</el-col >申诉时间:{{ form.appealTime ? form.appealTime : "--" }}</el-col
> >
<el-col :span="24" <el-col :span="24"
>申诉附件:{{ form.performAttendAppealFilesList ? form.performAttendAppealFilesList : "--" }}</el-col >申诉附件:
<span v-if="!form.performAttendAppealFilesList">
--
</span>
<div class="img_content" v-else>
<div
class="imgBox"
v-for="val in form.performAttendAppealFilesList"
:key="val.id"
@click="hanldeDownloadFile(val)"
>
<img src="../../../../assets/images/fileImg.png" alt="" />
{{ val.fileName }}
</div>
</div>
</el-col>
</el-row>
</div>
</div>
<div class="box" v-if="form.view == '查看' || form.processStatus == 2">
<div class="title">申诉结果</div>
<div class="content">
<el-row>
<el-col :span="8"
>申诉结果:{{
form.appealResult ? form.appealResult : "--"
}}</el-col
> >
<el-col :span="8"
>处理人员:{{
form.updateUserId ? form.updateUserId : "--"
}}</el-col
>
<el-col :span="8"
>处理时间:{{ form.appealTime ? form.appealTime : "--" }}</el-col
>
</el-row>
<el-row>
<el-col :span="24"
>说明:{{ form.remark ? form.remark : "--" }}</el-col
>
</el-row>
</div>
</div>
<div class="box" v-else>
<div class="title">申诉结果</div>
<div class="content">
<el-row>
<el-col :span="24">
<el-form-item label="申诉结果:">
<el-radio-group v-model="form.appealResult">
<el-radio :label="1">通过</el-radio>
<el-radio :label="2">不通过</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="说明:">
<el-input type="textarea" v-model="form.remark"></el-input>
</el-form-item>
</el-col>
</el-row> </el-row>
</div> </div>
</div> </div>
<div class="box"></div>
<form-buttons <form-buttons
@submit="submitForm" @submit="submitForm"
v-if="pageInfo.type != 'view'" v-if="pageInfo.type != 'view'"
...@@ -393,6 +455,9 @@ ...@@ -393,6 +455,9 @@
<script> <script>
import form from "@/assets/mixins/formdialog"; import form from "@/assets/mixins/formdialog";
import { timestampToTime } from "@/assets/utils/dateFormat.js";
import { downloadFile } from "@/assets/utils/index";
export default { export default {
name: "PerformAttendAppealDetail", name: "PerformAttendAppealDetail",
mixins: [form], mixins: [form],
...@@ -433,6 +498,26 @@ export default { ...@@ -433,6 +498,26 @@ export default {
}, },
methods: { methods: {
// 下载附件
hanldeDownloadFile(val) {
console.log(val);
downloadFile(val.filePath, val.fileName);
},
picMatter(val) {
if (val || val !== "--") {
return (
<el-image
src={val.indexOf("http") == -1 ? this.baseUrl + val : val}
preview-src-list={
val.indexOf("http") == -1 ? this.baseUrl + val : val
}
style="width: 100px"
></el-image>
);
} else {
return val;
}
},
/** 绩效记录申诉附件信息序号 */ /** 绩效记录申诉附件信息序号 */
rowPerformAttendAppealFilesIndex({ row, rowIndex }) { rowPerformAttendAppealFilesIndex({ row, rowIndex }) {
row.index = rowIndex + 1; row.index = rowIndex + 1;
...@@ -472,9 +557,8 @@ export default { ...@@ -472,9 +557,8 @@ export default {
}, },
// 渲染前置处理 // 渲染前置处理
beforeRender(data) { beforeRender(data) {
if (data.entity.performAttendAppealFilesList) { if (data.performAttendAppealFilesList) {
this.performAttendAppealFilesList = this.performAttendAppealFilesList = data.performAttendAppealFilesList;
data.entity.performAttendAppealFilesList;
} }
return data; return data;
}, },
...@@ -482,10 +566,47 @@ export default { ...@@ -482,10 +566,47 @@ export default {
edit(row) { edit(row) {
this.reset(); this.reset();
this.query = { id: row.id }; this.query = { id: row.id };
this.urls.currUrl = "perform/attend/appeal/edit"; // this.urls.currUrl = "/perform/attend/appeal/info";
this.getData(); // this.getData();
this.$get("/perform/attend/appeal/info", { id: row.id }).then((res) => {
if (res.code == 1) {
this.form = res.data;
} else {
this.reset();
}
for (let key in this.form) {
key == "actualAttendTime"
? (this.form[key] = timestampToTime(this.form[key], 6))
: key == "attendanceDate"
? (this.form[key] = timestampToTime(this.form[key], 6))
: key == "createTime"
? (this.form[key] = timestampToTime(this.form[key], 6))
: key == "errorTime"
? (this.form[key] = timestampToTime(this.form[key], 6))
: key == "updateTime"
? (this.form[key] = timestampToTime(this.form[key], 6))
: key == "checkTime"
? (this.form[key] = timestampToTime(this.form[key], 6))
: key == "reviewTime"
? (this.form[key] = timestampToTime(this.form[key], 6))
: key == "appealTime"
? (this.form[key] = timestampToTime(this.form[key], 6))
: key == "complainTime"
? (this.form[key] = timestampToTime(this.form[key], 6))
: key == "happenTime"
? (this.form[key] = timestampToTime(this.form[key], 6))
: key == "alarmTime"
? (this.form[key] = timestampToTime(this.form[key], 6))
: key == "alarmTime"
? (this.form[key] = timestampToTime(this.form[key], 6))
: "";
}
this.form.appealResult = "";
this.form.remark = "";
this.open = true;
});
this.pageInfo.type = "edit"; this.pageInfo.type = "edit";
this.title = "修改绩效记录申诉信息"; this.title = "处理绩效记录申诉信息";
}, },
/** 新增 */ /** 新增 */
add(row) { add(row) {
...@@ -501,6 +622,7 @@ export default { ...@@ -501,6 +622,7 @@ export default {
this.query = { id: row.id }; this.query = { id: row.id };
this.urls.currUrl = "perform/attend/appeal/view"; this.urls.currUrl = "perform/attend/appeal/view";
this.getData(); this.getData();
this.form.view = "查看";
this.pageInfo.type = "view"; this.pageInfo.type = "view";
this.title = "绩效记录申诉信息详细"; this.title = "绩效记录申诉信息详细";
}, },
...@@ -603,6 +725,27 @@ export default { ...@@ -603,6 +725,27 @@ export default {
/deep/.el-row { /deep/.el-row {
margin-bottom: 20px; margin-bottom: 20px;
} }
.img_content {
width: 100%;
height: auto;
display: flex;
flex-wrap: wrap;
padding: 10px 0 0 10px;
}
.imgBox {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
width: 60px;
height: 80px;
cursor: pointer;
img {
width: 50px;
height: 50px;
margin-top: 10px;
}
}
} }
} }
} }
......
...@@ -13,8 +13,17 @@ ...@@ -13,8 +13,17 @@
<div class="content"> <div class="content">
<div class="search_box"> <div class="search_box">
<div class="search"> <div class="search">
<el-select v-model="dateValue" placeholder="请选择" style="margin: 0 10px;"> <el-select
<el-option v-for="item in optionsMonths" :key="item.value" :label="item.label" :value="item.value"> v-model="dateValue"
placeholder="请选择"
style="margin: 0 10px;"
>
<el-option
v-for="item in optionsMonths"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option> </el-option>
</el-select> </el-select>
<el-button type="primary">搜索</el-button> <el-button type="primary">搜索</el-button>
...@@ -23,17 +32,29 @@ ...@@ -23,17 +32,29 @@
<div class="data_box"> <div class="data_box">
<div class="top"> <div class="top">
<div class="box"> <div class="box">
<bar-charts :title="'申诉次数部门排名TOP20'" :id="'dept_20'" :legendName="'申诉次数'" <bar-charts
:styleObj="{ width: '800px', height: '360px' }" /> :title="'申诉次数部门排名TOP20'"
:id="'dept_20'"
:legendName="'申诉次数'"
:styleObj="{ width: '800px', height: '360px' }"
/>
</div> </div>
<div class="box"> <div class="box">
<bar-charts :title="'申诉次数个人排名TOP20'" :id="'person_20'" :legendName="'申诉次数'" <bar-charts
:styleObj="{ width: '800px', height: '360px' }" /> :title="'申诉次数个人排名TOP20'"
:id="'person_20'"
:legendName="'申诉次数'"
:styleObj="{ width: '800px', height: '360px' }"
/>
</div> </div>
</div> </div>
<div class="down"> <div class="down">
<bar-charts :title="'申诉次数规则排名TOP20'" :id="'rule_20'" :legendName="'申诉次数'" <bar-charts
:styleObj="{ width: '1800px', height: '320px' }" /> :title="'申诉次数规则排名TOP20'"
:id="'rule_20'"
:legendName="'申诉次数'"
:styleObj="{ width: '1800px', height: '320px' }"
/>
</div> </div>
</div> </div>
</div> </div>
...@@ -197,11 +218,23 @@ export default { ...@@ -197,11 +218,23 @@ export default {
{ {
label: "操作", label: "操作",
formatter: (row) => { formatter: (row) => {
return ( return row.processStatus == 2 ? (
<table-buttons
noAdd
noDel
noEdit
row={row}
onEdit={this.toEdit}
onView={this.toView}
onDel={this.toDel}
/>
) : (
<table-buttons <table-buttons
noAdd noAdd
noDel noDel
noView
noEdit noEdit
chuli
row={row} row={row}
onEdit={this.toEdit} onEdit={this.toEdit}
onView={this.toView} onView={this.toView}
...@@ -213,68 +246,9 @@ export default { ...@@ -213,68 +246,9 @@ export default {
], ],
}, },
activeName: "1", activeName: "1",
optionsMonths: [ dateValue: "2023-01-00 00:00:00",
{
value: "2023-01-00 00:00:00",
label: "1月",
},
{
value: "2023-02-00 00:00:00",
label: "2月",
},
{
value: "2023-03-00 00:00:00",
label: "3月",
},
{
value: "2023-04-00 00:00:00",
label: "4月",
},
{
value: "2023-05-00 00:00:00",
label: "5月",
},
{
value: "2023-06-00 00:00:00",
label: "6月",
},
{
value: "2023-07-00 00:00:00",
label: "7月",
},
{
value: "2023-08-00 00:00:00",
label: "8月",
},
{
value: "2023-09-00 00:00:00",
label: "9月",
},
{
value: "2023-10-00 00:00:00",
label: "10月",
},
{
value: "2023-11-00 00:00:00",
label: "11月",
},
{
value: "2023-12-00 00:00:00",
label: "12月",
},
],
dateValue: '2023-01-00 00:00:00',
}; };
}, },
mounted() {
// this.$post('/perform/attend/appeal/stat', { appealTimeStart: this.dateValue }).then(res => {
// console.log(res)
// })
},
methods: {
}
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
......
...@@ -657,7 +657,7 @@ export default { ...@@ -657,7 +657,7 @@ export default {
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.117647058823529); box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.117647058823529);
-moz-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.117647058823529); -moz-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.117647058823529);
-webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.117647058823529); -webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.117647058823529);
margin: 0 20px 20px 0; margin: 10px 20px 20px 10px;
padding: 20px; padding: 20px;
.goal_title { .goal_title {
width: 100%; width: 100%;
......
...@@ -182,7 +182,6 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> { ...@@ -182,7 +182,6 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> {
model.put(PAGEINFO_KEY, pageInfo); model.put(PAGEINFO_KEY, pageInfo);
} }
public static void main(String[] args) { public static void main(String[] args) {
} }
......
package com.mortals.xhx.common.code;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* @author: finegirl
* @date: 2021/7/16 11:50
* @description: //TODO 请完善注释信息
**/
public enum AppealStatTypeEnum {
申诉次数部门排名(1, "deptName"),
申诉次数个人排名(2, "staffName"),
申诉次数规则排名(3, "ruleName");
private int value;
private String desc;
private AppealStatTypeEnum(int value, String desc) {
this.value = value;
this.desc = desc;
}
public int getValue() {
return this.value;
}
public String getDesc() {
return this.desc;
}
public static AppealStatTypeEnum getByValue(int value) {
AppealStatTypeEnum[] var1 = values();
int var2 = var1.length;
for(int var3 = 0; var3 < var2; ++var3) {
AppealStatTypeEnum examStatus = var1[var3];
if (examStatus.getValue() == value) {
return examStatus;
}
}
return null;
}
public static Map<String, String> getEnumMap(int... eItem) {
Map<String, String> resultMap = new LinkedHashMap();
AppealStatTypeEnum[] var2 = values();
int var3 = var2.length;
for(int var4 = 0; var4 < var3; ++var4) {
AppealStatTypeEnum item = var2[var4];
try {
boolean hasE = false;
int[] var7 = eItem;
int var8 = eItem.length;
for(int var9 = 0; var9 < var8; ++var9) {
int e = var7[var9];
if (item.getValue() == e) {
hasE = true;
break;
}
}
if (!hasE) {
resultMap.put(item.getValue() + "", item.getDesc());
}
} catch (Exception var11) {
}
}
return resultMap;
}
}
\ No newline at end of file
...@@ -11,7 +11,8 @@ import java.util.Map; ...@@ -11,7 +11,8 @@ import java.util.Map;
public enum SubMethodEnum { public enum SubMethodEnum {
系统自动(1, "系统自动"), 系统自动(1, "系统自动"),
人工添加(2, "人工添加"), 人工添加(2, "人工添加"),
大厅巡查(3, "大厅巡查"); 大厅巡查(3, "大厅巡查"),
申诉冲销(4, "申诉冲销");
private Integer value; private Integer value;
private String desc; private String desc;
......
...@@ -110,7 +110,7 @@ public class CheckAttendRecordEntity extends CheckAttendRecordVo { ...@@ -110,7 +110,7 @@ public class CheckAttendRecordEntity extends CheckAttendRecordVo {
*/ */
private Integer checkStatus; private Integer checkStatus;
/** /**
* 扣分方式(1.系统自动,2.人工添加,3.大厅巡查) * 扣分方式(1.系统自动,2.人工添加,3.大厅巡查,4.申诉冲销)
*/ */
private Integer subMethod; private Integer subMethod;
/** /**
......
package com.mortals.xhx.module.perform.dao; package com.mortals.xhx.module.perform.dao;
import com.mortals.framework.dao.ICRUDDao; import com.mortals.framework.dao.ICRUDDao;
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 java.util.List; import java.util.List;
/** /**
* 绩效记录申诉信息Dao * 绩效记录申诉信息Dao
...@@ -13,5 +16,7 @@ import java.util.List; ...@@ -13,5 +16,7 @@ import java.util.List;
public interface PerformAttendAppealDao extends ICRUDDao<PerformAttendAppealEntity,Long>{ public interface PerformAttendAppealDao extends ICRUDDao<PerformAttendAppealEntity,Long>{
String SQLID_GET_STATLIST = "getStatList";
List<AppealInfo> getStatList(PerformAttendAppealEntity query, PageInfo pageInfo);
} }
package com.mortals.xhx.module.perform.dao.ibatis; package com.mortals.xhx.module.perform.dao.ibatis;
import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.ParamDto;
import com.mortals.xhx.module.perform.model.vo.AppealInfo;
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;
import com.mortals.xhx.module.perform.model.PerformAttendAppealEntity; import com.mortals.xhx.module.perform.model.PerformAttendAppealEntity;
...@@ -17,5 +21,14 @@ import java.util.List; ...@@ -17,5 +21,14 @@ import java.util.List;
public class PerformAttendAppealDaoImpl extends BaseCRUDDaoMybatis<PerformAttendAppealEntity,Long> implements PerformAttendAppealDao { public class PerformAttendAppealDaoImpl extends BaseCRUDDaoMybatis<PerformAttendAppealEntity,Long> implements PerformAttendAppealDao {
@Override
public List<AppealInfo> getStatList(PerformAttendAppealEntity query, PageInfo pageInfo) {
ParamDto queryParam = super.getQueryParam(query);
if (pageInfo.getPrePageResult() == -1) {
return getSqlSession().selectList(SQLID_GET_STATLIST, queryParam);
} else {
RowBounds rowBounds = new RowBounds(pageInfo.getBeginIndex(), pageInfo.getPrePageResult());
return getSqlSession().selectList(SQLID_GET_STATLIST, queryParam, rowBounds);
}
}
} }
package com.mortals.xhx.module.perform.model.vo;
import lombok.Data;
@Data
public class AppealInfo {
private String staffName;
private String deptName;
private String ruleName;
private Integer number;
}
package com.mortals.xhx.module.perform.model.vo; package com.mortals.xhx.module.perform.model.vo;
import com.mortals.framework.model.BaseEntityLong; import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.perform.model.PerformAttendAppealEntity;
import java.util.ArrayList;
import java.util.List;
import lombok.Data; import lombok.Data;
import com.mortals.framework.annotation.Excel;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
/** /**
* 绩效记录申诉信息视图对象 * 绩效记录申诉信息视图对象
...@@ -16,4 +13,13 @@ import java.util.Date; ...@@ -16,4 +13,13 @@ import java.util.Date;
@Data @Data
public class PerformAttendAppealVo extends BaseEntityLong { public class PerformAttendAppealVo extends BaseEntityLong {
/**
* 时间
*/
private String appealTimeStart;
/**
* 统计类型(1.申诉次数部门排名,2.申诉次数个人排名,3.申诉次数规则排名)
*/
private Integer statType;
} }
\ No newline at end of file
package com.mortals.xhx.module.perform.service; package com.mortals.xhx.module.perform.service;
import com.mortals.framework.common.Rest;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICRUDService; 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 java.util.List;
/** /**
* PerformAttendAppealService * PerformAttendAppealService
* * <p>
* 绩效记录申诉信息 service接口 * 绩效记录申诉信息 service接口
* *
* @author zxfei * @author zxfei
* @date 2023-07-12 * @date 2023-07-12
*/ */
public interface PerformAttendAppealService extends ICRUDService<PerformAttendAppealEntity,Long>{ public interface PerformAttendAppealService extends ICRUDService<PerformAttendAppealEntity, Long> {
PerformAttendAppealDao getDao(); PerformAttendAppealDao getDao();
Rest<Void> audit(PerformAttendAppealEntity appeal, Context context);
Rest<List<AppealInfo>> stat(PerformAttendAppealEntity appeal, Context context);
} }
\ No newline at end of file
package com.mortals.xhx.module.perform.service.impl; package com.mortals.xhx.module.perform.service.impl;
import cn.hutool.core.date.DateUtil;
import com.mortals.framework.common.Rest;
import com.mortals.framework.model.OrderCol;
import com.mortals.framework.model.PageInfo;
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.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 org.springframework.stereotype.Service;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
...@@ -11,27 +23,164 @@ import com.mortals.xhx.module.perform.model.PerformAttendAppealFilesEntity; ...@@ -11,27 +23,164 @@ 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.service.PerformAttendAppealFilesService; import com.mortals.xhx.module.perform.service.PerformAttendAppealFilesService;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import java.util.Date; import java.util.Date;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
/** /**
* PerformAttendAppealService * PerformAttendAppealService
* 绩效记录申诉信息 service实现 * 绩效记录申诉信息 service实现
* *
* @author zxfei * @author zxfei
* @date 2023-07-12 * @date 2023-07-12
*/ */
@Service("performAttendAppealService") @Service("performAttendAppealService")
@Slf4j @Slf4j
public class PerformAttendAppealServiceImpl extends AbstractCRUDServiceImpl<PerformAttendAppealDao, PerformAttendAppealEntity, Long> implements PerformAttendAppealService { public class PerformAttendAppealServiceImpl extends AbstractCRUDServiceImpl<PerformAttendAppealDao, PerformAttendAppealEntity, Long> implements PerformAttendAppealService {
@Autowired
private CheckAttendRecordService checkAttendRecordService;
@Autowired
private CheckReviewRecordService checkReviewRecordService;
@Autowired
private CheckComplainRecordService checkComplainRecordService;
@Autowired
private CheckEffectRecordService checkEffectRecordService;
@Autowired
private CheckGoworkRecordService checkGoworkRecordService;
@Autowired
private CheckOtherRecordService checkOtherRecordService;
@Autowired @Autowired
private PerformAttendAppealFilesService performAttendAppealFilesService; private PerformAttendAppealFilesService performAttendAppealFilesService;
@Override
public Rest<Void> audit(PerformAttendAppealEntity appeal, Context context) {
PerformAttendAppealEntity appealEntity = this.get(appeal.getId(), context);
if (appealEntity.getProcessStatus() == ProcessStatusEnum.已处理.getValue()) {
throw new AppException("当前申诉已审核!");
}
appealEntity.setProcessStatus(ProcessStatusEnum.已处理.getValue());
appealEntity.setAppealDesc(appeal.getAppealDesc());
appealEntity.setAppealResult(appeal.getAppealResult());
appealEntity.setAppealTime(new Date());
appealEntity.setUpdateUserId(context.getUser().getId());
appealEntity.setUpdateTime(new Date());
this.getDao().update(appealEntity);
String appealMsg = "申诉成功,返回所扣分数,申诉ID:" + appeal.getId().toString();
if (appeal.getAppealResult() == AppealResultEnum.通过.getValue()) {
if (appeal.getSubAddType() == SubAddTypeEnum.扣除.getValue()) {
//需增一条记录后 冲销相关核查的记录
if (PerformTypeEnum.考勤绩效.getValue().equals(appeal.getPerformType())) {
CheckAttendRecordEntity checkEntity = checkAttendRecordService.get(appeal.getId(), context);
CheckAttendRecordEntity checkAttendRecordEntity = new CheckAttendRecordEntity();
checkAttendRecordEntity.initAttrValue();
BeanUtils.copyProperties(checkEntity, checkAttendRecordEntity, new String[]{"id", "recordId"});
checkAttendRecordEntity.setSubAddType(SubAddTypeEnum.增加.getValue());
checkAttendRecordEntity.setSubMethod(SubMethodEnum.申诉冲销.getValue());
checkAttendRecordEntity.setRemark(appealMsg);
checkAttendRecordService.save(checkAttendRecordEntity, context);
} else if (PerformTypeEnum.评价差评绩效.getValue().equals(appeal.getPerformType())) {
CheckReviewRecordEntity checkEntity = checkReviewRecordService.get(appeal.getId(), context);
CheckReviewRecordEntity checkRecordEntity = new CheckReviewRecordEntity();
checkRecordEntity.initAttrValue();
BeanUtils.copyProperties(checkEntity, checkRecordEntity, new String[]{"id", "recordId"});
checkRecordEntity.setSubAddType(SubAddTypeEnum.增加.getValue());
checkRecordEntity.setSubMethod(SubMethodEnum.申诉冲销.getValue());
checkRecordEntity.setRemark(appealMsg);
checkRecordEntity.setCreateTime(new Date());
checkRecordEntity.setCreateUserId(this.getContextUserId(context));
checkReviewRecordService.save(checkRecordEntity, context);
} else if (PerformTypeEnum.评价投诉绩效.getValue().equals(appeal.getPerformType())) {
CheckComplainRecordEntity checkEntity = checkComplainRecordService.get(appeal.getId(), context);
CheckComplainRecordEntity checkRecordEntity = new CheckComplainRecordEntity();
checkRecordEntity.initAttrValue();
BeanUtils.copyProperties(checkEntity, checkRecordEntity, new String[]{"id", "recordId"});
checkRecordEntity.setSubAddType(SubAddTypeEnum.增加.getValue());
checkRecordEntity.setSubMethod(SubMethodEnum.申诉冲销.getValue());
checkRecordEntity.setRemark(appealMsg);
checkRecordEntity.setCreateTime(new Date());
checkRecordEntity.setCreateUserId(this.getContextUserId(context));
checkComplainRecordService.save(checkRecordEntity, context);
} else if (PerformTypeEnum.办件绩效.getValue().equals(appeal.getPerformType())) {
CheckGoworkRecordEntity checkEntity = checkGoworkRecordService.get(appeal.getId(), context);
CheckGoworkRecordEntity checkRecordEntity = new CheckGoworkRecordEntity();
checkRecordEntity.initAttrValue();
BeanUtils.copyProperties(checkEntity, checkRecordEntity, new String[]{"id", "recordId"});
checkRecordEntity.setSubAddType(SubAddTypeEnum.增加.getValue());
checkRecordEntity.setSubMethod(SubMethodEnum.申诉冲销.getValue());
checkRecordEntity.setRemark(appealMsg);
checkRecordEntity.setCreateTime(new Date());
checkRecordEntity.setCreateUserId(this.getContextUserId(context));
checkGoworkRecordService.save(checkRecordEntity, context);
} else if (PerformTypeEnum.效能绩效.getValue().equals(appeal.getPerformType())) {
CheckEffectRecordEntity checkEntity = checkEffectRecordService.get(appeal.getId(), context);
CheckEffectRecordEntity checkRecordEntity = new CheckEffectRecordEntity();
checkRecordEntity.initAttrValue();
BeanUtils.copyProperties(checkEntity, checkRecordEntity, new String[]{"id", "recordId"});
checkRecordEntity.setSubAddType(SubAddTypeEnum.增加.getValue());
checkRecordEntity.setSubMethod(SubMethodEnum.申诉冲销.getValue());
checkRecordEntity.setRemark(appealMsg);
checkRecordEntity.setCreateTime(new Date());
checkRecordEntity.setCreateUserId(this.getContextUserId(context));
checkEffectRecordService.save(checkRecordEntity, context);
} else if (PerformTypeEnum.其它绩效.getValue().equals(appeal.getPerformType())) {
CheckOtherRecordEntity checkEntity = checkOtherRecordService.get(appeal.getId(), context);
CheckOtherRecordEntity checkRecordEntity = new CheckOtherRecordEntity();
checkRecordEntity.initAttrValue();
BeanUtils.copyProperties(checkEntity, checkRecordEntity, new String[]{"id", "recordId"});
checkRecordEntity.setSubAddType(SubAddTypeEnum.增加.getValue());
checkRecordEntity.setSubMethod(SubMethodEnum.申诉冲销.getValue());
checkRecordEntity.setRemark(appealMsg);
checkRecordEntity.setCreateTime(new Date());
checkRecordEntity.setCreateUserId(this.getContextUserId(context));
checkOtherRecordService.save(checkRecordEntity, context);
}
}
}
return Rest.ok();
}
@Override
public Rest<List<AppealInfo>> stat(PerformAttendAppealEntity appeal, Context context) {
PageInfo pageInfo = new PageInfo(20);
//统计
String groupName = AppealStatTypeEnum.getByValue(appeal.getStatType()).getDesc();
PerformAttendAppealQuery query = new PerformAttendAppealQuery();
if (ObjectUtils.isEmpty(appeal.getAppealTimeStart())) {
//未设置时间的情况,默认为当月
query.setCreateTimeStart(DateUtil.beginOfMonth(new Date()).toDateStr());
query.setCreateTimeEnd(DateUtil.today());
} else {
//格式化到指定日期的当月
query.setCreateTimeStart(DateUtil.beginOfMonth(DateUtil.parse(appeal.getAppealTimeStart()).toJdkDate()).toDateStr());
query.setCreateTimeEnd(DateUtil.endOfMonth(DateUtil.parse(appeal.getAppealTimeStart()).toJdkDate()).toDateStr());
}
query.setGroupList(Arrays.asList(groupName));
query.setOrderColList(Arrays.asList(new OrderCol("number", OrderCol.DESCENDING)));
List<AppealInfo> statList = this.getDao().getStatList(query, pageInfo);
return Rest.ok(statList);
}
@Override @Override
protected void saveAfter(PerformAttendAppealEntity entity, Context context) throws AppException { protected void saveAfter(PerformAttendAppealEntity entity, Context context) throws AppException {
if(!ObjectUtils.isEmpty(entity.getPerformAttendAppealFilesList())){ if (!ObjectUtils.isEmpty(entity.getPerformAttendAppealFilesList())) {
entity.getPerformAttendAppealFilesList().stream().peek(item->{ entity.getPerformAttendAppealFilesList().stream().peek(item -> {
item.setAppealId(entity.getId()); item.setAppealId(entity.getId());
item.setCreateUserId(this.getContextUserId(context)); item.setCreateUserId(this.getContextUserId(context));
item.setCreateTime(new Date()); item.setCreateTime(new Date());
...@@ -43,10 +192,10 @@ public class PerformAttendAppealServiceImpl extends AbstractCRUDServiceImpl<Perf ...@@ -43,10 +192,10 @@ public class PerformAttendAppealServiceImpl extends AbstractCRUDServiceImpl<Perf
@Override @Override
protected void updateAfter(PerformAttendAppealEntity entity, Context context) throws AppException { protected void updateAfter(PerformAttendAppealEntity entity, Context context) throws AppException {
if(!ObjectUtils.isEmpty(entity.getPerformAttendAppealFilesList())){ if (!ObjectUtils.isEmpty(entity.getPerformAttendAppealFilesList())) {
Long[] performAttendAppealFilesIds = performAttendAppealFilesService.find(new PerformAttendAppealFilesQuery().appealId(entity.getId())).stream().map(PerformAttendAppealFilesEntity::getId).toArray(Long[]::new); Long[] performAttendAppealFilesIds = performAttendAppealFilesService.find(new PerformAttendAppealFilesQuery().appealId(entity.getId())).stream().map(PerformAttendAppealFilesEntity::getId).toArray(Long[]::new);
performAttendAppealFilesService.remove(performAttendAppealFilesIds,context); performAttendAppealFilesService.remove(performAttendAppealFilesIds, context);
entity.getPerformAttendAppealFilesList().stream().peek(item ->{ entity.getPerformAttendAppealFilesList().stream().peek(item -> {
item.setAppealId(entity.getId()); item.setAppealId(entity.getId());
item.setCreateUserId(this.getContextUserId(context)); item.setCreateUserId(this.getContextUserId(context));
item.setCreateTime(new Date()); item.setCreateTime(new Date());
...@@ -61,7 +210,8 @@ public class PerformAttendAppealServiceImpl extends AbstractCRUDServiceImpl<Perf ...@@ -61,7 +210,8 @@ public class PerformAttendAppealServiceImpl extends AbstractCRUDServiceImpl<Perf
@Override @Override
protected void removeAfter(Long[] ids, Context context, int result) throws AppException { protected void removeAfter(Long[] ids, Context context, int result) throws AppException {
List<PerformAttendAppealFilesEntity> performAttendAppealFileslist = performAttendAppealFilesService.find(new PerformAttendAppealFilesQuery().appealIdList(Arrays.asList(ids))); List<PerformAttendAppealFilesEntity> performAttendAppealFileslist = performAttendAppealFilesService.find(new PerformAttendAppealFilesQuery().appealIdList(Arrays.asList(ids)));
performAttendAppealFilesService.removeList(performAttendAppealFileslist,context); performAttendAppealFilesService.removeList(performAttendAppealFileslist, context);
super.removeAfter(ids, context, result); super.removeAfter(ids, context, result);
} }
} }
\ No newline at end of file
...@@ -43,7 +43,6 @@ public class PerformRulesServiceImpl extends AbstractCRUDCacheServiceImpl<Perfor ...@@ -43,7 +43,6 @@ public class PerformRulesServiceImpl extends AbstractCRUDCacheServiceImpl<Perfor
@Override @Override
protected void saveBefore(PerformRulesEntity entity, Context context) throws AppException { protected void saveBefore(PerformRulesEntity entity, Context context) throws AppException {
if (ObjectUtils.isEmpty(entity.getRuleCode())) { if (ObjectUtils.isEmpty(entity.getRuleCode())) {
String ruleCode = ""; String ruleCode = "";
/* /*
if (PerformRulesTypeEnum.考勤绩效.getValue() == entity.getType()) { if (PerformRulesTypeEnum.考勤绩效.getValue() == entity.getType()) {
...@@ -52,22 +51,22 @@ public class PerformRulesServiceImpl extends AbstractCRUDCacheServiceImpl<Perfor ...@@ -52,22 +51,22 @@ public class PerformRulesServiceImpl extends AbstractCRUDCacheServiceImpl<Perfor
*/ */
switch (PerformRulesTypeEnum.getByValue(entity.getType())) { switch (PerformRulesTypeEnum.getByValue(entity.getType())) {
case 考勤绩效: case 考勤绩效:
ruleCode = PerformRulesTypeEnum.getByValue(entity.getType()).getDesc().toUpperCase() + "_" + idgeneratorService.getLongId(ATTEND_KEY); ruleCode = PerformRulesTypeEnum.getByValue(entity.getType()).getDesc().toUpperCase() + idgeneratorService.getLongId(ATTEND_KEY);
break; break;
case 评价差评绩效: case 评价差评绩效:
ruleCode = PerformRulesTypeEnum.getByValue(entity.getType()).getDesc().toUpperCase() + "_" + idgeneratorService.getLongId(REVIEW_KEY); ruleCode = PerformRulesTypeEnum.getByValue(entity.getType()).getDesc().toUpperCase() + idgeneratorService.getLongId(REVIEW_KEY);
break; break;
case 评价投诉绩效: case 评价投诉绩效:
ruleCode = PerformRulesTypeEnum.getByValue(entity.getType()).getDesc().toUpperCase() + "_" + idgeneratorService.getLongId(COMPLAIN_KEY); ruleCode = PerformRulesTypeEnum.getByValue(entity.getType()).getDesc().toUpperCase() + idgeneratorService.getLongId(COMPLAIN_KEY);
break; break;
case 办件绩效: case 办件绩效:
ruleCode = PerformRulesTypeEnum.getByValue(entity.getType()).getDesc().toUpperCase() + "_" + idgeneratorService.getLongId(GOWORK_KEY); ruleCode = PerformRulesTypeEnum.getByValue(entity.getType()).getDesc().toUpperCase() + idgeneratorService.getLongId(GOWORK_KEY);
break; break;
case 效能绩效: case 效能绩效:
ruleCode = PerformRulesTypeEnum.getByValue(entity.getType()).getDesc().toUpperCase() + "_" + idgeneratorService.getLongId(EFFECT_KEY); ruleCode = PerformRulesTypeEnum.getByValue(entity.getType()).getDesc().toUpperCase() + idgeneratorService.getLongId(EFFECT_KEY);
break; break;
case 其它绩效: case 其它绩效:
ruleCode = PerformRulesTypeEnum.getByValue(entity.getType()).getDesc().toUpperCase() + "_" + idgeneratorService.getLongId(OTHER_KEY); ruleCode = PerformRulesTypeEnum.getByValue(entity.getType()).getDesc().toUpperCase() + idgeneratorService.getLongId(OTHER_KEY);
break; break;
default: default:
throw new AppException("绩效类型不支持!"); throw new AppException("绩效类型不支持!");
......
package com.mortals.xhx.module.perform.web; package com.mortals.xhx.module.perform.web;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
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.YesNoEnum;
import com.mortals.xhx.module.perform.model.vo.AppealInfo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
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 org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
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 com.mortals.xhx.module.perform.service.PerformAttendAppealService;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import com.mortals.framework.util.StringUtils; import com.mortals.framework.util.StringUtils;
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 java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import java.util.Arrays; import java.util.Arrays;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*; import static com.mortals.framework.ap.SysConstains.*;
/** /**
* * 绩效记录申诉信息
* 绩效记录申诉信息 *
* * @author zxfei
* @author zxfei * @date 2023-07-12
* @date 2023-07-12 */
*/
@RestController @RestController
@RequestMapping("perform/attend/appeal") @RequestMapping("perform/attend/appeal")
public class PerformAttendAppealController extends BaseCRUDJsonBodyMappingController<PerformAttendAppealService,PerformAttendAppealEntity,Long> { public class PerformAttendAppealController extends BaseCRUDJsonBodyMappingController<PerformAttendAppealService, PerformAttendAppealEntity, Long> {
@Autowired @Autowired
private ParamService paramService; private ParamService paramService;
public PerformAttendAppealController(){ public PerformAttendAppealController() {
super.setModuleDesc( "绩效记录申诉信息"); super.setModuleDesc("绩效记录申诉信息");
} }
@Override @Override
protected void init(Map<String, Object> model, Context context) { protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "subMethod", paramService.getParamBySecondOrganize("PerformAttendAppeal","subMethod")); this.addDict(model, "subMethod", paramService.getParamBySecondOrganize("PerformAttendAppeal", "subMethod"));
this.addDict(model, "subAddType", paramService.getParamBySecondOrganize("PerformAttendAppeal","subAddType")); this.addDict(model, "subAddType", paramService.getParamBySecondOrganize("PerformAttendAppeal", "subAddType"));
this.addDict(model, "processStatus", paramService.getParamBySecondOrganize("PerformAttendAppeal","processStatus")); this.addDict(model, "processStatus", paramService.getParamBySecondOrganize("PerformAttendAppeal", "processStatus"));
this.addDict(model, "appealResult", paramService.getParamBySecondOrganize("PerformAttendAppeal","appealResult")); this.addDict(model, "appealResult", paramService.getParamBySecondOrganize("PerformAttendAppeal", "appealResult"));
this.addDict(model, "reviewResult", paramService.getParamBySecondOrganize("PerformAttendAppeal","reviewResult")); this.addDict(model, "reviewResult", paramService.getParamBySecondOrganize("PerformAttendAppeal", "reviewResult"));
this.addDict(model, "reviewSource", paramService.getParamBySecondOrganize("PerformAttendAppeal","reviewSource")); this.addDict(model, "reviewSource", paramService.getParamBySecondOrganize("PerformAttendAppeal", "reviewSource"));
this.addDict(model, "irregularType", paramService.getParamBySecondOrganize("PerformAttendAppeal","irregularType")); this.addDict(model, "irregularType", paramService.getParamBySecondOrganize("PerformAttendAppeal", "irregularType"));
this.addDict(model, "irregularOtherType", paramService.getParamBySecondOrganize("PerformAttendAppeal","irregularOtherType")); this.addDict(model, "irregularOtherType", paramService.getParamBySecondOrganize("PerformAttendAppeal", "irregularOtherType"));
super.init(model, context); super.init(model, context);
} }
/**
* 申诉统计
*/
@PostMapping(value = "stat")
public String appealStat(@RequestBody PerformAttendAppealEntity appeal) {
JSONObject jsonObject = new JSONObject();
String busiDesc = this.getModuleDesc() + "统计";
try {
Rest<List<AppealInfo>> rest = this.service.stat(appeal, getContext());
if (rest.getCode() == YesNoEnum.NO.getValue()) {
throw new AppException("统计异常!");
} else {
jsonObject.put(KEY_RESULT_DATA, rest.getData());
}
recordSysLog(request, busiDesc + " 【成功】");
jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
} catch (Exception e) {
log.error("申诉审核", e);
jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
jsonObject.put(KEY_RESULT_MSG, super.convertException(e));
}
return jsonObject.toJSONString();
}
/**
* 申诉审核
*/
@PostMapping(value = "audit")
public String appealAudit(@RequestBody PerformAttendAppealEntity appeal) {
JSONObject jsonObject = new JSONObject();
String busiDesc = this.getModuleDesc() + "审核";
try {
Rest<Void> audit = this.service.audit(appeal, getContext());
if (audit.getCode() == YesNoEnum.NO.getValue()) {
throw new AppException("申诉审核异常!");
}
recordSysLog(request, busiDesc + " 【成功】");
jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
} catch (Exception e) {
log.error("申诉审核", e);
jsonObject.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
jsonObject.put(KEY_RESULT_MSG, super.convertException(e));
}
return jsonObject.toJSONString();
}
} }
\ 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">
<!-- 字段和属性映射 -->
<resultMap type="com.mortals.xhx.module.perform.model.vo.AppealInfo" id="AppealInfo-Map">
<result property="staffName" column="staffName" />
<result property="deptName" column="deptName" />
<result property="ruleName" column="ruleName" />
<result property="number" column="number" />
</resultMap>
<!-- 获取统计列表 -->
<select id="getStatList" parameterType="paramDto" resultMap="AppealInfo-Map">
select
<!-- 获取分组字段 -->
<if test="groupList != null and !groupList.isEmpty()">
<foreach collection="groupList" open="" close="" index="index" item="item">
${item},
</foreach>
</if>
count(IFNULL(a.id,0)) number
from mortals_xhx_perform_attend_appeal as a
<trim suffixOverrides="where" suffix="">
where
<trim prefixOverrides="and" prefix="">
<include refid="_condition_"/>
</trim>
</trim>
<include refid="_group_by_"/>
<include refid="_orderCols_"/>
</select>
</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