Commit ce9fa5a6 authored by “yiyousong”'s avatar “yiyousong”
parents e6666e10 a062c364
...@@ -453,17 +453,26 @@ export default { ...@@ -453,17 +453,26 @@ export default {
formatterPic(row, column, val) { formatterPic(row, column, val) {
const content = formatter(this.tableData, column, val); const content = formatter(this.tableData, column, val);
if (content) { if (content) {
const suffix = `(bmp|jpg|png|tif|gif|pcx|tga|exif|fpx|svg|psd|cdr|pcd|dxf|ufo|eps|ai|raw|WMF|webp|jpeg)`;
const regular = new RegExp(`.*\.${suffix}`);
if (regular.test(val)) {
return ( return (
<el-image <el-image
src={val.indexOf("http") == -1 ? baseUrl + val : val} src={val.indexOf("http") == -1 ? baseUrl + val : val}
preview-src-list={val.indexOf("http") == -1 ? baseUrl + val : val} preview-src-list={
val.indexOf("http") == -1 ? [baseUrl + val] : [val]
}
style="width: 100px" style="width: 100px"
></el-image> ></el-image>
); );
} else {
return <el-link type="primary">{val}</el-link>;
}
} else { } else {
return val; return val;
} }
}, },
// 考勤组格式 // 考勤组格式
formatterBanci(row, column, val) { formatterBanci(row, column, val) {
const content = formatter(this.tableData, column, val); const content = formatter(this.tableData, column, val);
...@@ -489,6 +498,7 @@ export default { ...@@ -489,6 +498,7 @@ export default {
}, },
// 当某一行被点击时会触发该事件 // 当某一行被点击时会触发该事件
handleRowClick(row, column, event) {}, handleRowClick(row, column, event) {},
handleCellClick(row, column, event) {},
// 合并表格行列 // 合并表格行列
handleSpanMethod() {}, handleSpanMethod() {},
// 自定义表格排序 // 自定义表格排序
...@@ -619,6 +629,7 @@ export default { ...@@ -619,6 +629,7 @@ export default {
methods: { methods: {
handleSelectionChange: this.handleSelectionChange, handleSelectionChange: this.handleSelectionChange,
handleRowClick: this.handleRowClick, handleRowClick: this.handleRowClick,
handleCellClick: this.handleCellClick,
tableRowClassName: this.tableRowClassName, tableRowClassName: this.tableRowClassName,
handleSpanMethod: this.handleSpanMethod, handleSpanMethod: this.handleSpanMethod,
handleSortChange: this.handleSortChange, handleSortChange: this.handleSortChange,
......
...@@ -31,7 +31,7 @@ export default { ...@@ -31,7 +31,7 @@ export default {
<i style="font-size:16px;color:#409EFF" class={data.icon}></i> <i style="font-size:16px;color:#409EFF" class={data.icon}></i>
<span style="padding-left: 2px;font-size:14px">{node.label}</span> <span style="padding-left: 2px;font-size:14px">{node.label}</span>
<span style="padding-left: 2px;font-size:14px;margin-left:20px"> <span style="padding-left: 2px;font-size:14px;margin-left:20px">
({data.children?data.children.length:0}) ({data.personList?data.personList.length:0})
</span> </span>
</span> </span>
) )
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
@sort-change="handleSortChange" @sort-change="handleSortChange"
@row-click="handleRowClick" @row-click="handleRowClick"
@cell-click="handleCellClick"
:row-class-name="tableRowClassName" :row-class-name="tableRowClassName"
:empty-text="emptytxt ? emptytxt : emptyText" :empty-text="emptytxt ? emptytxt : emptyText"
border border
...@@ -81,6 +82,11 @@ export default { ...@@ -81,6 +82,11 @@ export default {
required: false, required: false,
default: () => {}, default: () => {},
}, },
handleCellClick: {
type: Function,
required: false,
default: () => {},
},
handleSortChange: { handleSortChange: {
type: Function, type: Function,
required: false, required: false,
......
...@@ -182,6 +182,7 @@ ...@@ -182,6 +182,7 @@
:handleSelectableMethod="config.methods.handleSelectableMethod" :handleSelectableMethod="config.methods.handleSelectableMethod"
:handleSelectionChange="config.methods.handleSelectionChange" :handleSelectionChange="config.methods.handleSelectionChange"
:handleRowClick="config.methods.handleRowClick" :handleRowClick="config.methods.handleRowClick"
:handleCellClick="config.methods.handleCellClick"
/> />
<DataTableFlow <DataTableFlow
......
<template>
<!-- 弹出框表单 -->
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field disabled label="请假人" prop="leavePerson" v-model="form.leavePerson" placeholder="请输入请假人"/>
<Field disabled label="所属部门" prop="deptName" v-model="form.deptName" type="textarea" placeholder="请输入所属部门"/>
<Field disabled label="电话号码" prop="phoneNumber" v-model="form.phoneNumber" placeholder="请输入电话号码"/>
<Field disabled label="请假类型" prop="leaveType" v-model="form.leaveType" type="select" :enumData="dict.leaveType" placeholder="请选择请假类型"/>
<Field disabled label="开始时间" prop="startTime" v-model="form.startTime" type="date" />
<Field disabled label="结束时间" prop="endTime" v-model="form.endTime" type="date" />
<Field disabled label="时长,单位秒" prop="duration" v-model="form.duration" placeholder="请输入时长,单位秒"/>
<Field disabled label="请假事由" prop="reason" v-model="form.reason" type="textarea" placeholder="请输入请假事由"/>
<Field disabled label="审批负责人" prop="approver" v-model="form.approver" placeholder="请输入审批负责人"/>
<Field disabled label="附件" prop="attachment" v-model="form.attachment" type="textarea" placeholder="请输入附件"/>
<Field disabled label="附件路径" prop="attachmentPath" v-model="form.attachmentPath" type="textarea" placeholder="请输入附件路径"/>
<Field disabled label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/>
<Field disabled label="申请时间" prop="appealTime" v-model="form.appealTime" type="date" />
<Field label="审核结果" prop="auditResult" v-model="form.auditResult" type="radio" :enumData="dict.auditResult" placeholder="请选择审核结果"/>
<Field label="审核说明" prop="auditDesc" v-model="form.auditDesc" placeholder="请输入审核说明"/>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">审 核</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</template>
<script>
import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow";
export default {
mixins: [form],
components: {
dialogShow ,
},
data() {
return {
// 遮罩层
loading: true,
// 弹出层标题
title: "请假记录信息",
// 是否显示弹出层
open: false,
// urls: { saveUrl: "/check/attend/record/examine" },
toString:[
"leaveType",
"auditResult",
"processStatus",
],
// 表单校验
rules: {
}
};
},
methods: {
/** 编辑 */
edit(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="attendance/leave/record/edit";
this.getData();
this.pageInfo.type="edit"
this.title = "修改请假记录信息";
},
/** 新增 */
add(row) {
this.reset()
this.urls.currUrl = "attendance/leave/record/add";
this.getData();
this.pageInfo.type="add"
this.title = "新增请假记录信息";
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="attendance/leave/record/view";
this.getData();
this.pageInfo.type="view"
this.title = "请假记录信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
this.open = true;
},
beforeSubmit(data) {
data.processStatus=2;
return data;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置
reset() {
this.form = {
leavePersonId : null,
leavePerson : "",
deptId : null,
deptName : "",
phoneNumber : "",
leaveType : null,
startTime : null,
endTime : null,
duration : null,
reason : "",
approverId : null,
approver : "",
attachment : "",
attachmentPath : "",
remark : "",
appealTime : null,
auditResult : null,
auditDesc : "",
auditTime : null,
processStatus : 1,
};
this.resetForm("form");
},
resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
},
},
};
</script>
...@@ -2,21 +2,25 @@ ...@@ -2,21 +2,25 @@
<div class="page"> <div class="page">
<LayoutTable :data="tableData" :config="tableConfig" notDel> <LayoutTable :data="tableData" :config="tableConfig" notDel>
<el-button type="primary" @click="doExport" :disabled="isExport" <el-button type="primary" @click="doExport" :disabled="isExport"
size="mini" slot="table-head-left2">导出</el-button> size="mini" slot="table-head-left2">导出
</el-button>
</LayoutTable> </LayoutTable>
<drawer-show ref="drawerform" @ok="getData" /> <drawer-show ref="drawerform" @ok="getData"/>
<drawer-audit ref="draweraudit" @ok="getData"/>
</div> </div>
</template> </template>
<script> <script>
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
import drawerShow from "./drawershow"; import drawerShow from "./drawershow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
export default {
export default {
name: "AttendanceLeaveRecordList", name: "AttendanceLeaveRecordList",
components: { components: {
drawerShow drawerShow
}, },
mixins: [table], mixins: [table],
created() { created() {
}, },
...@@ -33,12 +37,17 @@ ...@@ -33,12 +37,17 @@
toView(row) { toView(row) {
this.$refs.drawerform.view(row); this.$refs.drawerform.view(row);
}, },
doExport(){ audit(row) {
//todo 审核页面进行审核
this.$refs.draweraudit.view(row);
},
doExport() {
this.isExport = true; this.isExport = true;
this.$download("/leave/record/exportExcel", { this.$download("/leave/record/exportExcel", {
"idList": this.selection, "idList": this.selection,
'name': this.$route.query['name'], 'name': this.$route.query['name'],
}, { type: "excel" }).then(() => this.isExport = false).catch(error => { }, {type: "excel"}).then(() => this.isExport = false).catch(error => {
this.isExport = false; this.isExport = false;
this.$message.error(error.message); this.$message.error(error.message);
}) })
...@@ -46,9 +55,9 @@ ...@@ -46,9 +55,9 @@
}, },
data() { data() {
return { return {
isExport:false, isExport: false,
config: { config: {
isshowTabPane:true, isshowTabPane: true,
search: [ search: [
{ {
name: "leavePerson", name: "leavePerson",
...@@ -89,7 +98,7 @@ ...@@ -89,7 +98,7 @@
], ],
columns: [ columns: [
{type: "selection", width: 60}, {type: "selection", width: 60},
{type: "index",label: "序号",width: 50}, {type: "index", label: "序号", width: 50},
// {label: "请假人id", prop: "leavePersonId", formatter: this.formatter}, // {label: "请假人id", prop: "leavePersonId", formatter: this.formatter},
...@@ -101,25 +110,48 @@ ...@@ -101,25 +110,48 @@
{label: "电话号码", prop: "phoneNumber"}, {label: "电话号码", prop: "phoneNumber"},
{label: "请假类型", prop: "leaveType",formatter: this.formatterLeaveType}, {label: "请假类型", prop: "leaveType", formatter: this.formatterLeaveType},
{label: "开始时间", prop: "startTime", formatter: this.formatterDate}, {label: "开始时间", prop: "startTime", formatter: this.formatterDate},
{label: "结束时间", prop: "endTime", formatter: this.formatterDate}, {label: "结束时间", prop: "endTime", formatter: this.formatterDate},
{label: "时长", prop: "duration",formatter: this.formatter}, {label: "时长", prop: "duration", formatter: this.formatter},
// {label: "审批负责人Id", prop: "approverId", formatter: this.formatter}, // {label: "审批负责人Id", prop: "approverId", formatter: this.formatter},
/* {label: "处理状态", prop: "processStatus", formatter: this.formatter},*/
{label: "状态", prop: "auditResult", formatter: this.formatter},
{label: "审批负责人", prop: "approver"}, {label: "审批负责人", prop: "approver"},
{label: "创建用户", prop: "createUserId", formatter: this.formatter}, {label: "创建用户", prop: "createUserId", formatter: this.formatter},
{label: "创建时间", prop: "createTime", formatter: this.formatterDate},
{ {
label: "操作", label: "操作",
width: 240, width: 240,
formatter: row => { formatter: row => {
return ( return (
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel} /> <div>
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel}/>
<span> </span>
{row.processStatus === 1 ? (
<el-button
size="mini"
type="text"
icon="el-icon-open"
onClick={() => {
this.audit(row);
}}
>
审核
</el-button>
) : (
""
)}
</div>
); );
} }
} }
...@@ -127,5 +159,5 @@ ...@@ -127,5 +159,5 @@
} }
}; };
} }
}; };
</script> </script>
...@@ -413,13 +413,20 @@ export default { ...@@ -413,13 +413,20 @@ export default {
name: "staffName", name: "staffName",
type: "text", type: "text",
label: "员工姓名", label: "员工姓名",
fuzzy: false, fuzzy: true,
},
{
name: "workNum",
type: "text",
label: "员工工号",
fuzzy: true,
}, },
{ {
name: "phone", name: "phone",
type: "text", type: "text",
label: "手机号", label: "手机号",
fuzzy: false, fuzzy: true,
}, },
{ {
name: "deptId", name: "deptId",
......
...@@ -71,6 +71,7 @@ ...@@ -71,6 +71,7 @@
>图片凭证: >图片凭证:
<el-image <el-image
v-if="form.filePaths"
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src=" :src="
`${ `${
...@@ -79,9 +80,14 @@ ...@@ -79,9 +80,14 @@
: form.filePaths : form.filePaths
}` }`
" "
:preview-src-list="form.filePaths" :preview-src-list="
form.filePaths.indexOf('http') == -1
? [baseUrl + form.filePaths]
: [form.filePaths]
"
> >
</el-image> </el-image>
<span v-else>--</span>
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
...@@ -106,12 +112,16 @@ ...@@ -106,12 +112,16 @@
@input="radioChange" @input="radioChange"
v-else v-else
> >
<el-radio :label="1">加分/扣分</el-radio> <el-radio
<el-radio :label="2">不加分/不扣分</el-radio> v-for="(val, i) in dict.checkResult"
:key="i"
:label="val"
>{{ val }}</el-radio
>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-row> </el-row>
<div v-if="form.checkResult == 1"> <div v-if="form.checkResult == '加分或扣分'">
<el-row> <el-row>
<el-form-item <el-form-item
:label="form.view == '查看' ? '绩效规则:' : '修改规则:'" :label="form.view == '查看' ? '绩效规则:' : '修改规则:'"
...@@ -441,7 +451,6 @@ export default { ...@@ -441,7 +451,6 @@ export default {
await this.$get("/check/attend/record/info", { id: row.id }).then( await this.$get("/check/attend/record/info", { id: row.id }).then(
(res) => { (res) => {
console.log(res.data);
if (res.code == 1) { if (res.code == 1) {
this.form = res.data; this.form = res.data;
this.dict = res.dict; this.dict = res.dict;
......
...@@ -63,6 +63,8 @@ ...@@ -63,6 +63,8 @@
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
import drawerShow from "./drawershow"; import drawerShow from "./drawershow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
import { downloadFile } from "@/assets/utils/index";
export default { export default {
name: "CheckAttendRecordList", name: "CheckAttendRecordList",
components: { components: {
...@@ -71,6 +73,16 @@ export default { ...@@ -71,6 +73,16 @@ export default {
mixins: [table], mixins: [table],
created() {}, created() {},
methods: { methods: {
handleCellClick(row, column, event, cell) {
if ((column.label = "图片凭证")) {
const suffix = `(bmp|jpg|png|tif|gif|pcx|tga|exif|fpx|svg|psd|cdr|pcd|dxf|ufo|eps|ai|raw|WMF|webp|jpeg)`;
const regular = new RegExp(`.*\.${suffix}`);
regular.test(row.filePaths);
if (!regular.test(row.filePaths)) {
downloadFile(row.filePaths, row.fileName);
}
}
},
/** 导入 */ /** 导入 */
handleImport() { handleImport() {
this.upload.title = "考勤绩效记录核查信息导入"; this.upload.title = "考勤绩效记录核查信息导入";
...@@ -213,6 +225,7 @@ export default { ...@@ -213,6 +225,7 @@ export default {
{ {
label: "图片凭证", label: "图片凭证",
prop: "filePaths", prop: "filePaths",
width: 150,
formatter: this.formatterPic, formatter: this.formatterPic,
}, },
......
...@@ -86,6 +86,7 @@ ...@@ -86,6 +86,7 @@
<el-col :span="12" <el-col :span="12"
>图片凭证: >图片凭证:
<el-image <el-image
v-if="form.filePaths"
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src=" :src="
`${ `${
...@@ -94,10 +95,15 @@ ...@@ -94,10 +95,15 @@
: form.filePaths : form.filePaths
}` }`
" "
:preview-src-list="form.filePaths" :preview-src-list="
form.filePaths.indexOf('http') == -1
? [baseUrl + form.filePaths]
: [form.filePaths]
"
> >
</el-image </el-image>
></el-col> <span v-else>--</span>
</el-col>
</el-row> </el-row>
</div> </div>
</div> </div>
...@@ -121,12 +127,16 @@ ...@@ -121,12 +127,16 @@
@input="radioChange" @input="radioChange"
v-else v-else
> >
<el-radio :label="1">加分/扣分</el-radio> <el-radio
<el-radio :label="2">不加分/不扣分</el-radio> v-for="(val, i) in dict.checkResult"
:key="i"
:label="val"
>{{ val }}</el-radio
>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-row> </el-row>
<div v-if="form.checkResult == 1"> <div v-if="form.checkResult == '加分或扣分'">
<el-row> <el-row>
<el-form-item <el-form-item
:label="form.view == '查看' ? '绩效规则:' : '修改规则:'" :label="form.view == '查看' ? '绩效规则:' : '修改规则:'"
......
...@@ -63,6 +63,8 @@ ...@@ -63,6 +63,8 @@
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
import drawerShow from "./drawershow"; import drawerShow from "./drawershow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
import { downloadFile } from "@/assets/utils/index";
export default { export default {
name: "CheckComplainRecordList", name: "CheckComplainRecordList",
components: { components: {
...@@ -71,6 +73,16 @@ export default { ...@@ -71,6 +73,16 @@ export default {
mixins: [table], mixins: [table],
created() {}, created() {},
methods: { methods: {
handleCellClick(row, column, event, cell) {
if ((column.label = "图片凭证")) {
const suffix = `(bmp|jpg|png|tif|gif|pcx|tga|exif|fpx|svg|psd|cdr|pcd|dxf|ufo|eps|ai|raw|WMF|webp|jpeg)`;
const regular = new RegExp(`.*\.${suffix}`);
regular.test(row.filePaths);
if (!regular.test(row.filePaths)) {
downloadFile(row.filePaths, row.fileName);
}
}
},
/** 导入 */ /** 导入 */
handleImport() { handleImport() {
this.upload.title = "评价绩效投诉核查信息导入"; this.upload.title = "评价绩效投诉核查信息导入";
...@@ -218,6 +230,7 @@ export default { ...@@ -218,6 +230,7 @@ export default {
{ {
label: "图片凭证", label: "图片凭证",
prop: "filePaths", prop: "filePaths",
width: 150,
formatter: this.formatterPic, formatter: this.formatterPic,
}, },
......
...@@ -63,6 +63,7 @@ ...@@ -63,6 +63,7 @@
<el-col :span="24"> <el-col :span="24">
图片凭证: 图片凭证:
<el-image <el-image
v-if="form.filePaths"
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src=" :src="
`${ `${
...@@ -71,10 +72,15 @@ ...@@ -71,10 +72,15 @@
: form.filePaths : form.filePaths
}` }`
" "
:preview-src-list="form.filePaths" :preview-src-list="
form.filePaths.indexOf('http') == -1
? [baseUrl + form.filePaths]
: [form.filePaths]
"
> >
</el-image </el-image>
></el-col> <span v-else>--</span>
</el-col>
</el-row> </el-row>
</div> </div>
</div> </div>
...@@ -98,12 +104,16 @@ ...@@ -98,12 +104,16 @@
@input="radioChange" @input="radioChange"
v-else v-else
> >
<el-radio :label="1">加分/扣分</el-radio> <el-radio
<el-radio :label="2">不加分/不扣分</el-radio> v-for="(val, i) in dict.checkResult"
:key="i"
:label="val"
>{{ val }}</el-radio
>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-row> </el-row>
<div v-if="form.checkResult == 1"> <div v-if="form.checkResult == '加分或扣分'">
<el-row> <el-row>
<el-form-item <el-form-item
:label="form.view == '查看' ? '绩效规则:' : '修改规则:'" :label="form.view == '查看' ? '绩效规则:' : '修改规则:'"
......
...@@ -63,6 +63,8 @@ ...@@ -63,6 +63,8 @@
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
import drawerShow from "./drawershow"; import drawerShow from "./drawershow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
import { downloadFile } from "@/assets/utils/index";
export default { export default {
name: "CheckEffectRecordList", name: "CheckEffectRecordList",
components: { components: {
...@@ -71,6 +73,16 @@ export default { ...@@ -71,6 +73,16 @@ export default {
mixins: [table], mixins: [table],
created() {}, created() {},
methods: { methods: {
handleCellClick(row, column, event, cell) {
if ((column.label = "图片凭证")) {
const suffix = `(bmp|jpg|png|tif|gif|pcx|tga|exif|fpx|svg|psd|cdr|pcd|dxf|ufo|eps|ai|raw|WMF|webp|jpeg)`;
const regular = new RegExp(`.*\.${suffix}`);
regular.test(row.filePaths);
if (!regular.test(row.filePaths)) {
downloadFile(row.filePaths, row.fileName);
}
}
},
/** 导入 */ /** 导入 */
handleImport() { handleImport() {
this.upload.title = "效能绩效核查信息导入"; this.upload.title = "效能绩效核查信息导入";
...@@ -220,6 +232,7 @@ export default { ...@@ -220,6 +232,7 @@ export default {
{ {
label: "图片凭证", label: "图片凭证",
prop: "filePaths", prop: "filePaths",
width: 150,
formatter: this.formatterPic, formatter: this.formatterPic,
}, },
......
...@@ -65,6 +65,7 @@ ...@@ -65,6 +65,7 @@
<el-col :span="24"> <el-col :span="24">
图片凭证: 图片凭证:
<el-image <el-image
v-if="form.filePaths"
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src=" :src="
`${ `${
...@@ -73,10 +74,15 @@ ...@@ -73,10 +74,15 @@
: form.filePaths : form.filePaths
}` }`
" "
:preview-src-list="form.filePaths" :preview-src-list="
form.filePaths.indexOf('http') == -1
? [baseUrl + form.filePaths]
: [form.filePaths]
"
> >
</el-image </el-image>
></el-col> <span v-else>--</span>
</el-col>
</el-row> </el-row>
</div> </div>
</div> </div>
...@@ -100,12 +106,16 @@ ...@@ -100,12 +106,16 @@
@input="radioChange" @input="radioChange"
v-else v-else
> >
<el-radio :label="1">加分/扣分</el-radio> <el-radio
<el-radio :label="2">不加分/不扣分</el-radio> v-for="(val, i) in dict.checkResult"
:key="i"
:label="val"
>{{ val }}</el-radio
>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-row> </el-row>
<div v-if="form.checkResult == 1"> <div v-if="form.checkResult == '加分或扣分'">
<el-row> <el-row>
<el-form-item <el-form-item
:label="form.view == '查看' ? '绩效规则:' : '修改规则:'" :label="form.view == '查看' ? '绩效规则:' : '修改规则:'"
......
...@@ -63,6 +63,8 @@ ...@@ -63,6 +63,8 @@
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
import drawerShow from "./drawershow"; import drawerShow from "./drawershow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
import { downloadFile } from "@/assets/utils/index";
export default { export default {
name: "CheckGoworkRecordList", name: "CheckGoworkRecordList",
components: { components: {
...@@ -71,6 +73,16 @@ export default { ...@@ -71,6 +73,16 @@ export default {
mixins: [table], mixins: [table],
created() {}, created() {},
methods: { methods: {
handleCellClick(row, column, event, cell) {
if ((column.label = "图片凭证")) {
const suffix = `(bmp|jpg|png|tif|gif|pcx|tga|exif|fpx|svg|psd|cdr|pcd|dxf|ufo|eps|ai|raw|WMF|webp|jpeg)`;
const regular = new RegExp(`.*\.${suffix}`);
regular.test(row.filePaths);
if (!regular.test(row.filePaths)) {
downloadFile(row.filePaths, row.fileName);
}
}
},
/** 导入 */ /** 导入 */
handleImport() { handleImport() {
this.upload.title = "办件绩效核查信息导入"; this.upload.title = "办件绩效核查信息导入";
...@@ -208,6 +220,7 @@ export default { ...@@ -208,6 +220,7 @@ export default {
{ {
label: "图片凭证", label: "图片凭证",
prop: "filePaths", prop: "filePaths",
width: 150,
formatter: this.formatterPic, formatter: this.formatterPic,
}, },
......
...@@ -61,6 +61,7 @@ ...@@ -61,6 +61,7 @@
<el-col :span="24" <el-col :span="24"
>图片凭证: >图片凭证:
<el-image <el-image
v-if="form.filePaths"
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src=" :src="
`${ `${
...@@ -69,10 +70,15 @@ ...@@ -69,10 +70,15 @@
: form.filePaths : form.filePaths
}` }`
" "
:preview-src-list="form.filePaths" :preview-src-list="
form.filePaths.indexOf('http') == -1
? [baseUrl + form.filePaths]
: [form.filePaths]
"
> >
</el-image </el-image>
></el-col> <span v-else>--</span>
</el-col>
</el-row> </el-row>
</div> </div>
</div> </div>
...@@ -96,12 +102,16 @@ ...@@ -96,12 +102,16 @@
@input="radioChange" @input="radioChange"
v-else v-else
> >
<el-radio :label="1">加分/扣分</el-radio> <el-radio
<el-radio :label="2">不加分/不扣分</el-radio> v-for="(val, i) in dict.checkResult"
:key="i"
:label="val"
>{{ val }}</el-radio
>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-row> </el-row>
<div v-if="form.checkResult == 1"> <div v-if="form.checkResult == '加分或扣分'">
<el-row> <el-row>
<el-form-item <el-form-item
:label="form.view == '查看' ? '绩效规则:' : '修改规则:'" :label="form.view == '查看' ? '绩效规则:' : '修改规则:'"
......
...@@ -63,6 +63,8 @@ ...@@ -63,6 +63,8 @@
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
import drawerShow from "./drawershow"; import drawerShow from "./drawershow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
import { downloadFile } from "@/assets/utils/index";
export default { export default {
name: "CheckOtherRecordList", name: "CheckOtherRecordList",
components: { components: {
...@@ -71,6 +73,16 @@ export default { ...@@ -71,6 +73,16 @@ export default {
mixins: [table], mixins: [table],
created() {}, created() {},
methods: { methods: {
handleCellClick(row, column, event, cell) {
if ((column.label = "图片凭证")) {
const suffix = `(bmp|jpg|png|tif|gif|pcx|tga|exif|fpx|svg|psd|cdr|pcd|dxf|ufo|eps|ai|raw|WMF|webp|jpeg)`;
const regular = new RegExp(`.*\.${suffix}`);
regular.test(row.filePaths);
if (!regular.test(row.filePaths)) {
downloadFile(row.filePaths, row.fileName);
}
}
},
/** 导入 */ /** 导入 */
handleImport() { handleImport() {
this.upload.title = "其它绩效核查信息导入"; this.upload.title = "其它绩效核查信息导入";
...@@ -216,6 +228,7 @@ export default { ...@@ -216,6 +228,7 @@ export default {
{ {
label: "图片凭证", label: "图片凭证",
prop: "filePaths", prop: "filePaths",
width: 150,
formatter: this.formatterPic, formatter: this.formatterPic,
}, },
......
...@@ -66,6 +66,7 @@ ...@@ -66,6 +66,7 @@
<el-col :span="12" <el-col :span="12"
>图片凭证: >图片凭证:
<el-image <el-image
v-if="form.filePaths"
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src=" :src="
`${ `${
...@@ -74,10 +75,15 @@ ...@@ -74,10 +75,15 @@
: form.filePaths : form.filePaths
}` }`
" "
:preview-src-list="form.filePaths" :preview-src-list="
form.filePaths.indexOf('http') == -1
? [baseUrl + form.filePaths]
: [form.filePaths]
"
> >
</el-image </el-image>
></el-col> <span v-else>--</span>
</el-col>
</el-row> </el-row>
</div> </div>
</div> </div>
...@@ -101,12 +107,16 @@ ...@@ -101,12 +107,16 @@
@input="radioChange" @input="radioChange"
v-else v-else
> >
<el-radio :label="1">加分/扣分</el-radio> <el-radio
<el-radio :label="2">不加分/不扣分</el-radio> v-for="(val, i) in dict.checkResult"
:key="i"
:label="val"
>{{ val }}</el-radio
>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-row> </el-row>
<div v-if="form.checkResult == 1"> <div v-if="form.checkResult == '加分或扣分'">
<el-row> <el-row>
<el-form-item <el-form-item
:label="form.view == '查看' ? '绩效规则:' : '修改规则:'" :label="form.view == '查看' ? '绩效规则:' : '修改规则:'"
......
...@@ -63,6 +63,8 @@ ...@@ -63,6 +63,8 @@
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
import drawerShow from "./drawershow"; import drawerShow from "./drawershow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
import { downloadFile } from "@/assets/utils/index";
export default { export default {
name: "CheckReviewRecordList", name: "CheckReviewRecordList",
components: { components: {
...@@ -71,6 +73,16 @@ export default { ...@@ -71,6 +73,16 @@ export default {
mixins: [table], mixins: [table],
created() {}, created() {},
methods: { methods: {
handleCellClick(row, column, event, cell) {
if ((column.label = "图片凭证")) {
const suffix = `(bmp|jpg|png|tif|gif|pcx|tga|exif|fpx|svg|psd|cdr|pcd|dxf|ufo|eps|ai|raw|WMF|webp|jpeg)`;
const regular = new RegExp(`.*\.${suffix}`);
regular.test(row.filePaths);
if (!regular.test(row.filePaths)) {
downloadFile(row.filePaths, row.fileName);
}
}
},
/** 导入 */ /** 导入 */
handleImport() { handleImport() {
this.upload.title = "评价差评绩效核查信息导入"; this.upload.title = "评价差评绩效核查信息导入";
...@@ -217,6 +229,7 @@ export default { ...@@ -217,6 +229,7 @@ export default {
{ {
label: "图片凭证", label: "图片凭证",
prop: "filePaths", prop: "filePaths",
width: 150,
formatter: this.formatterPic, formatter: this.formatterPic,
}, },
......
...@@ -87,6 +87,8 @@ ...@@ -87,6 +87,8 @@
<div style="margin-top: 3px;"> <div style="margin-top: 3px;">
{{ userOptions.length > 0 ? '请选择人员' : '请选择部门' }} {{ userOptions.length > 0 ? '请选择人员' : '请选择部门' }}
</div> </div>
<el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange"
v-if="userOptions.length > 0">全选</el-checkbox>
<el-checkbox-group v-model="checkedUser"> <el-checkbox-group v-model="checkedUser">
<el-checkbox v-for="i in userOptions" :label="i.staffId" :key="i">{{ i.staffName <el-checkbox v-for="i in userOptions" :label="i.staffId" :key="i">{{ i.staffName
}}</el-checkbox> }}</el-checkbox>
...@@ -105,7 +107,6 @@ ...@@ -105,7 +107,6 @@
<script> <script>
import formCreate from "@form-create/element-ui"; import formCreate from "@form-create/element-ui";
import moment from 'moment'
function formType(val) { function formType(val) {
// (1.单项选择,2.多项选择,3.文本框,4.多项文本框,5.文字,6.上传附件) // (1.单项选择,2.多项选择,3.文本框,4.多项文本框,5.文字,6.上传附件)
switch (val) { switch (val) {
...@@ -174,8 +175,11 @@ export default { ...@@ -174,8 +175,11 @@ export default {
}, },
treeDialog: 0, treeDialog: 0,
isIndeterminate: false,
userOptions: [], userOptions: [],
checkedUser: [], checkedUser: [],
checkAll: false,
checkAllArr: [],
} }
}, },
mounted() { mounted() {
...@@ -203,8 +207,32 @@ export default { ...@@ -203,8 +207,32 @@ export default {
this.$message.warning('请选择人员') this.$message.warning('请选择人员')
} }
}, },
handleCheckAllChange(val) {
console.log(val, this.userOptions)
if (val) {
let arr = []
this.userOptions.forEach(i => {
arr.push(i.staffId)
})
this.checkedUser = Array.from(new Set([...this.checkedUser, ...arr]))
console.log(this.checkedUser)
this.isIndeterminate = false;
} else {
let arr = []
this.userOptions.forEach(i => {
arr.push(i.staffId)
})
let newSet = new Set(this.checkedUser)
arr.forEach(i => {
newSet.delete(i)
})
this.checkedUser = [...newSet]
console.log(this.checkedUser)
}
},
handleNodeClick(data) { handleNodeClick(data) {
if (data.personList) { if (data.personList) {
this.checkAll = false;
this.userOptions = data.personList this.userOptions = data.personList
// console.log(this.userOptions) // console.log(this.userOptions)
} }
......
...@@ -78,6 +78,8 @@ ...@@ -78,6 +78,8 @@
import drawerShow from "./drawershow"; import drawerShow from "./drawershow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
import BarCharts from "./components/BarCharts.vue"; import BarCharts from "./components/BarCharts.vue";
import { downloadFile } from "@/assets/utils/index";
export default { export default {
name: "PerformAttendAppealList", name: "PerformAttendAppealList",
components: { components: {
...@@ -89,6 +91,16 @@ export default { ...@@ -89,6 +91,16 @@ export default {
this.getData(); this.getData();
}, },
methods: { methods: {
handleCellClick(row, column, event, cell) {
if ((column.label = "图片凭证")) {
const suffix = `(bmp|jpg|png|tif|gif|pcx|tga|exif|fpx|svg|psd|cdr|pcd|dxf|ufo|eps|ai|raw|WMF|webp|jpeg)`;
const regular = new RegExp(`.*\.${suffix}`);
regular.test(row.filePaths);
if (!regular.test(row.filePaths)) {
downloadFile(row.filePaths, row.fileName);
}
}
},
handleClick() { handleClick() {
this.getData(); this.getData();
}, },
......
...@@ -123,6 +123,7 @@ ...@@ -123,6 +123,7 @@
<el-form-item label="图片凭证:"> <el-form-item label="图片凭证:">
<div v-if="form.view == '查看'"> <div v-if="form.view == '查看'">
<el-image <el-image
v-if="form.filePaths"
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src=" :src="
`${ `${
...@@ -131,9 +132,14 @@ ...@@ -131,9 +132,14 @@
: form.filePaths : form.filePaths
}` }`
" "
:preview-src-list="form.filePaths" :preview-src-list="
form.filePaths.indexOf('http') == -1
? [baseUrl + form.filePaths]
: [form.filePaths]
"
> >
</el-image> </el-image>
<span v-else>--</span>
</div> </div>
<ImageUpload <ImageUpload
v-else v-else
......
...@@ -71,6 +71,8 @@ ...@@ -71,6 +71,8 @@
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
import drawerShow from "./drawershow"; import drawerShow from "./drawershow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
import { downloadFile } from "@/assets/utils/index";
export default { export default {
name: "PerformAttendRecordList", name: "PerformAttendRecordList",
components: { components: {
...@@ -79,6 +81,16 @@ export default { ...@@ -79,6 +81,16 @@ export default {
mixins: [table], mixins: [table],
created() {}, created() {},
methods: { methods: {
handleCellClick(row, column, event, cell) {
if ((column.label = "图片凭证")) {
const suffix = `(bmp|jpg|png|tif|gif|pcx|tga|exif|fpx|svg|psd|cdr|pcd|dxf|ufo|eps|ai|raw|WMF|webp|jpeg)`;
const regular = new RegExp(`.*\.${suffix}`);
regular.test(row.filePaths);
if (!regular.test(row.filePaths)) {
downloadFile(row.filePaths, row.fileName);
}
}
},
/** 导入 */ /** 导入 */
handleImport() { handleImport() {
this.upload.title = "考勤绩效记录信息导入"; this.upload.title = "考勤绩效记录信息导入";
...@@ -222,6 +234,7 @@ export default { ...@@ -222,6 +234,7 @@ export default {
{ {
label: "图片凭证", label: "图片凭证",
prop: "filePaths", prop: "filePaths",
width: 150,
formatter: this.formatterPic, formatter: this.formatterPic,
}, },
*/ */
...@@ -229,6 +242,7 @@ export default { ...@@ -229,6 +242,7 @@ export default {
{ {
label: "图片凭证", label: "图片凭证",
prop: "filePaths", prop: "filePaths",
width: 150,
formatter: this.formatterPic, formatter: this.formatterPic,
}, },
......
...@@ -175,6 +175,7 @@ ...@@ -175,6 +175,7 @@
<el-form-item label="图片凭证:"> <el-form-item label="图片凭证:">
<div v-if="form.view == '查看'"> <div v-if="form.view == '查看'">
<el-image <el-image
v-if="form.filePaths"
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src=" :src="
`${ `${
...@@ -183,9 +184,14 @@ ...@@ -183,9 +184,14 @@
: form.filePaths : form.filePaths
}` }`
" "
:preview-src-list="form.filePaths" :preview-src-list="
form.filePaths.indexOf('http') == -1
? [baseUrl + form.filePaths]
: [form.filePaths]
"
> >
</el-image> </el-image>
<span v-else>--</span>
</div> </div>
<ImageUpload <ImageUpload
v-else v-else
......
...@@ -71,6 +71,8 @@ ...@@ -71,6 +71,8 @@
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
import drawerShow from "./drawershow"; import drawerShow from "./drawershow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
import { downloadFile } from "@/assets/utils/index";
export default { export default {
name: "PerformComplainRecordList", name: "PerformComplainRecordList",
components: { components: {
...@@ -79,6 +81,16 @@ export default { ...@@ -79,6 +81,16 @@ export default {
mixins: [table], mixins: [table],
created() {}, created() {},
methods: { methods: {
handleCellClick(row, column, event, cell) {
if ((column.label = "图片凭证")) {
const suffix = `(bmp|jpg|png|tif|gif|pcx|tga|exif|fpx|svg|psd|cdr|pcd|dxf|ufo|eps|ai|raw|WMF|webp|jpeg)`;
const regular = new RegExp(`.*\.${suffix}`);
regular.test(row.filePaths);
if (!regular.test(row.filePaths)) {
downloadFile(row.filePaths, row.fileName);
}
}
},
/** 导入 */ /** 导入 */
handleImport() { handleImport() {
this.upload.title = "评价绩效投诉记录信息导入"; this.upload.title = "评价绩效投诉记录信息导入";
...@@ -225,6 +237,7 @@ export default { ...@@ -225,6 +237,7 @@ export default {
{ {
label: "图片凭证", label: "图片凭证",
prop: "filePaths", prop: "filePaths",
width: 150,
formatter: this.formatterPic, formatter: this.formatterPic,
}, },
......
...@@ -149,6 +149,7 @@ ...@@ -149,6 +149,7 @@
<el-form-item label="图片凭证:"> <el-form-item label="图片凭证:">
<div v-if="form.view == '查看'"> <div v-if="form.view == '查看'">
<el-image <el-image
v-if="form.filePaths"
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src=" :src="
`${ `${
...@@ -157,9 +158,14 @@ ...@@ -157,9 +158,14 @@
: form.filePaths : form.filePaths
}` }`
" "
:preview-src-list="form.filePaths" :preview-src-list="
form.filePaths.indexOf('http') == -1
? [baseUrl + form.filePaths]
: [form.filePaths]
"
> >
</el-image> </el-image>
<span v-else>--</span>
</div> </div>
<ImageUpload <ImageUpload
v-else v-else
...@@ -487,7 +493,6 @@ export default { ...@@ -487,7 +493,6 @@ export default {
this.form.filePaths = val; this.form.filePaths = val;
this.$forceUpdate(this.form); this.$forceUpdate(this.form);
}, },
staffChange(val) { staffChange(val) {
console.log(val); console.log(val);
......
...@@ -71,6 +71,8 @@ ...@@ -71,6 +71,8 @@
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
import drawerShow from "./drawershow"; import drawerShow from "./drawershow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
import { downloadFile } from "@/assets/utils/index";
export default { export default {
name: "PerformEffectRecordList", name: "PerformEffectRecordList",
components: { components: {
...@@ -79,6 +81,16 @@ export default { ...@@ -79,6 +81,16 @@ export default {
mixins: [table], mixins: [table],
created() {}, created() {},
methods: { methods: {
handleCellClick(row, column, event, cell) {
if ((column.label = "图片凭证")) {
const suffix = `(bmp|jpg|png|tif|gif|pcx|tga|exif|fpx|svg|psd|cdr|pcd|dxf|ufo|eps|ai|raw|WMF|webp|jpeg)`;
const regular = new RegExp(`.*\.${suffix}`);
regular.test(row.filePaths);
if (!regular.test(row.filePaths)) {
downloadFile(row.filePaths, row.fileName);
}
}
},
/** 导入 */ /** 导入 */
handleImport() { handleImport() {
this.upload.title = "效能绩效记录信息导入"; this.upload.title = "效能绩效记录信息导入";
...@@ -228,6 +240,7 @@ export default { ...@@ -228,6 +240,7 @@ export default {
{ {
label: "图片凭证", label: "图片凭证",
prop: "filePaths", prop: "filePaths",
width: 150,
formatter: this.formatterPic, formatter: this.formatterPic,
}, },
{ label: "绩效规则", prop: "ruleName" }, { label: "绩效规则", prop: "ruleName" },
......
...@@ -127,6 +127,7 @@ ...@@ -127,6 +127,7 @@
<el-form-item label="图片凭证:"> <el-form-item label="图片凭证:">
<div v-if="form.view == '查看'"> <div v-if="form.view == '查看'">
<el-image <el-image
v-if="form.filePaths"
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src=" :src="
`${ `${
...@@ -135,9 +136,14 @@ ...@@ -135,9 +136,14 @@
: form.filePaths : form.filePaths
}` }`
" "
:preview-src-list="form.filePaths" :preview-src-list="
form.filePaths.indexOf('http') == -1
? [baseUrl + form.filePaths]
: [form.filePaths]
"
> >
</el-image> </el-image>
<span v-else>--</span>
</div> </div>
<ImageUpload <ImageUpload
v-else v-else
......
...@@ -71,6 +71,8 @@ ...@@ -71,6 +71,8 @@
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
import drawerShow from "./drawershow"; import drawerShow from "./drawershow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
import { downloadFile } from "@/assets/utils/index";
export default { export default {
name: "PerformGoworkRecordList", name: "PerformGoworkRecordList",
components: { components: {
...@@ -79,6 +81,16 @@ export default { ...@@ -79,6 +81,16 @@ export default {
mixins: [table], mixins: [table],
created() {}, created() {},
methods: { methods: {
handleCellClick(row, column, event, cell) {
if ((column.label = "图片凭证")) {
const suffix = `(bmp|jpg|png|tif|gif|pcx|tga|exif|fpx|svg|psd|cdr|pcd|dxf|ufo|eps|ai|raw|WMF|webp|jpeg)`;
const regular = new RegExp(`.*\.${suffix}`);
regular.test(row.filePaths);
if (!regular.test(row.filePaths)) {
downloadFile(row.filePaths, row.fileName);
}
}
},
/** 导入 */ /** 导入 */
handleImport() { handleImport() {
this.upload.title = "办件绩效记录信息导入"; this.upload.title = "办件绩效记录信息导入";
...@@ -215,6 +227,7 @@ export default { ...@@ -215,6 +227,7 @@ export default {
{ {
label: "图片凭证", label: "图片凭证",
prop: "filePaths", prop: "filePaths",
width: 150,
formatter: this.formatterPic, formatter: this.formatterPic,
}, },
{ label: "绩效规则", prop: "ruleName" }, { label: "绩效规则", prop: "ruleName" },
......
...@@ -87,6 +87,7 @@ ...@@ -87,6 +87,7 @@
<el-form-item label="图片凭证:"> <el-form-item label="图片凭证:">
<div v-if="form.view == '查看'"> <div v-if="form.view == '查看'">
<el-image <el-image
v-if="form.filePaths"
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src=" :src="
`${ `${
...@@ -95,9 +96,14 @@ ...@@ -95,9 +96,14 @@
: form.filePaths : form.filePaths
}` }`
" "
:preview-src-list="form.filePaths" :preview-src-list="
form.filePaths.indexOf('http') == -1
? [baseUrl + form.filePaths]
: [form.filePaths]
"
> >
</el-image> </el-image>
<span v-else>--</span>
</div> </div>
<ImageUpload <ImageUpload
v-else v-else
......
...@@ -71,6 +71,8 @@ ...@@ -71,6 +71,8 @@
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
import drawerShow from "./drawershow"; import drawerShow from "./drawershow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
import { downloadFile } from "@/assets/utils/index";
export default { export default {
name: "PerformOtherRecordList", name: "PerformOtherRecordList",
components: { components: {
...@@ -79,6 +81,16 @@ export default { ...@@ -79,6 +81,16 @@ export default {
mixins: [table], mixins: [table],
created() {}, created() {},
methods: { methods: {
handleCellClick(row, column, event, cell) {
if ((column.label = "图片凭证")) {
const suffix = `(bmp|jpg|png|tif|gif|pcx|tga|exif|fpx|svg|psd|cdr|pcd|dxf|ufo|eps|ai|raw|WMF|webp|jpeg)`;
const regular = new RegExp(`.*\.${suffix}`);
regular.test(row.filePaths);
if (!regular.test(row.filePaths)) {
downloadFile(row.filePaths, row.fileName);
}
}
},
/** 导入 */ /** 导入 */
handleImport() { handleImport() {
this.upload.title = "其它绩效记录信息导入"; this.upload.title = "其它绩效记录信息导入";
...@@ -224,11 +236,16 @@ export default { ...@@ -224,11 +236,16 @@ export default {
{ {
label: "图片凭证", label: "图片凭证",
prop: "filePaths", prop: "filePaths",
width: 150,
formatter: this.formatterPic, formatter: this.formatterPic,
}, },
{ label: "绩效规则", prop: "ruleName" }, { label: "绩效规则", prop: "ruleName" },
{ label: "加分/扣分方式", prop: "subMethod", formatter: this.formatter }, {
label: "加分/扣分方式",
prop: "subMethod",
formatter: this.formatter,
},
{ {
label: "加分/扣分时间", label: "加分/扣分时间",
......
...@@ -140,6 +140,7 @@ ...@@ -140,6 +140,7 @@
<el-form-item label="图片凭证:"> <el-form-item label="图片凭证:">
<div v-if="form.view == '查看'"> <div v-if="form.view == '查看'">
<el-image <el-image
v-if="form.filePaths"
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src=" :src="
`${ `${
...@@ -148,9 +149,14 @@ ...@@ -148,9 +149,14 @@
: form.filePaths : form.filePaths
}` }`
" "
:preview-src-list="form.filePaths" :preview-src-list="
form.filePaths.indexOf('http') == -1
? [baseUrl + form.filePaths]
: [form.filePaths]
"
> >
</el-image> </el-image>
<span v-else>--</span>
</div> </div>
<ImageUpload <ImageUpload
v-else v-else
......
...@@ -71,6 +71,8 @@ ...@@ -71,6 +71,8 @@
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
import drawerShow from "./drawershow"; import drawerShow from "./drawershow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
import { downloadFile } from "@/assets/utils/index";
export default { export default {
name: "PerformReviewRecordList", name: "PerformReviewRecordList",
components: { components: {
...@@ -79,6 +81,16 @@ export default { ...@@ -79,6 +81,16 @@ export default {
mixins: [table], mixins: [table],
created() {}, created() {},
methods: { methods: {
handleCellClick(row, column, event, cell) {
if ((column.label = "图片凭证")) {
const suffix = `(bmp|jpg|png|tif|gif|pcx|tga|exif|fpx|svg|psd|cdr|pcd|dxf|ufo|eps|ai|raw|WMF|webp|jpeg)`;
const regular = new RegExp(`.*\.${suffix}`);
regular.test(row.filePaths);
if (!regular.test(row.filePaths)) {
downloadFile(row.filePaths, row.fileName);
}
}
},
/** 导入 */ /** 导入 */
handleImport() { handleImport() {
this.upload.title = "评价差评绩效记录信息导入"; this.upload.title = "评价差评绩效记录信息导入";
...@@ -225,6 +237,7 @@ export default { ...@@ -225,6 +237,7 @@ export default {
{ {
label: "图片凭证", label: "图片凭证",
prop: "filePaths", prop: "filePaths",
width: 150,
formatter: this.formatterPic, formatter: this.formatterPic,
}, },
......
...@@ -381,6 +381,7 @@ export default { ...@@ -381,6 +381,7 @@ export default {
}; };
}, },
methods: { methods: {
handleRowClick(val) { handleRowClick(val) {
val.check = !val.check; val.check = !val.check;
val.check val.check
......
...@@ -103,6 +103,11 @@ export default { ...@@ -103,6 +103,11 @@ export default {
sessionStorage.setItem("type", this.type); sessionStorage.setItem("type", this.type);
}, },
methods: { methods: {
handleCellClick(row, column, event, cell) {
if (column.label == "负责窗口数量") {
this.$refs.windowdrawerform.edit(row);
}
},
/** 重写新增方法 */ /** 重写新增方法 */
toAdd(row) { toAdd(row) {
this.$refs.windowdrawerform.add(row); this.$refs.windowdrawerform.add(row);
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body> <el-dialog :title="title" :visible.sync="open" width="90%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px"> <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row> <el-row>
<Field label="员工ID" prop="staffId" v-model="form.staffId" placeholder="请输入员工ID"/>
<Field label="员工姓名" prop="staffName" v-model="form.staffName" placeholder="请输入员工姓名"/> <Field label="员工姓名" prop="staffName" v-model="form.staffName" placeholder="请输入员工姓名"/>
<Field label="性别" prop="gender" v-model="form.gender" type="select" :enumData="dict.gender" placeholder="请选择性别"/> <Field label="性别" prop="gender" v-model="form.gender" type="select" :enumData="dict.gender" placeholder="请选择性别"/>
<Field label="出生日期" prop="birthday" v-model="form.birthday" type="date" /> <Field label="出生日期" prop="birthday" v-model="form.birthday" type="date" />
...@@ -12,10 +12,8 @@ ...@@ -12,10 +12,8 @@
<Field label="身份证号码" prop="idCard" v-model="form.idCard" placeholder="请输入身份证号码"/> <Field label="身份证号码" prop="idCard" v-model="form.idCard" placeholder="请输入身份证号码"/>
<Field label="工号" prop="workNum" v-model="form.workNum" placeholder="请输入工号"/> <Field label="工号" prop="workNum" v-model="form.workNum" placeholder="请输入工号"/>
<Field label="政治面貌 " prop="politicalstatus" v-model="form.politicalstatus" type="select" :enumData="dict.politicalstatus" placeholder="请选择政治面貌 "/> <Field label="政治面貌 " prop="politicalstatus" v-model="form.politicalstatus" type="select" :enumData="dict.politicalstatus" placeholder="请选择政治面貌 "/>
<Field label="所属部门" prop="deptId" v-model="form.deptId" placeholder="请输入所属部门"/> <Field label="所属部门" prop="deptId" v-model="form.deptId" :enumData="dict.deptId" placeholder="请输入所属部门"/>
<Field label="所属部门名称" prop="deptName" v-model="form.deptName" placeholder="请输入所属部门名称"/> <Field label="职位ID" prop="jobId" v-model="form.jobId" :enumData="dict.jobId" placeholder="请输入职位ID"/>
<Field label="职位ID" prop="jobId" v-model="form.jobId" placeholder="请输入职位ID"/>
<Field label="职位名称" prop="jobName" v-model="form.jobName" placeholder="请输入职位名称"/>
<Field label="员工类型" prop="staffType" v-model="form.staffType" type="select" :enumData="dict.staffType" placeholder="请选择员工类型"/> <Field label="员工类型" prop="staffType" v-model="form.staffType" type="select" :enumData="dict.staffType" placeholder="请选择员工类型"/>
<Field label="员工状态" prop="status" v-model="form.status" type="select" :enumData="dict.status" placeholder="请选择员工状态"/> <Field label="员工状态" prop="status" v-model="form.status" type="select" :enumData="dict.status" placeholder="请选择员工状态"/>
<Field label="入职时间" prop="entryDate" v-model="form.entryDate" type="date" /> <Field label="入职时间" prop="entryDate" v-model="form.entryDate" type="date" />
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
size="50%"> size="50%">
<el-form ref="form" :model="form" :rules="rules" label-width="120px"> <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row> <el-row>
<Field label="员工ID" prop="staffId" v-model="form.staffId" placeholder="请输入员工ID"/>
<Field label="员工姓名" prop="staffName" v-model="form.staffName" placeholder="请输入员工姓名"/> <Field label="员工姓名" prop="staffName" v-model="form.staffName" placeholder="请输入员工姓名"/>
<Field label="性别" prop="gender" v-model="form.gender" type="select" :enumData="dict.gender" placeholder="请选择性别"/> <Field label="性别" prop="gender" v-model="form.gender" type="select" :enumData="dict.gender" placeholder="请选择性别"/>
<Field label="出生日期" prop="birthday" v-model="form.birthday" type="date" /> <Field label="出生日期" prop="birthday" v-model="form.birthday" type="date" />
...@@ -16,10 +15,8 @@ ...@@ -16,10 +15,8 @@
<Field label="身份证号码" prop="idCard" v-model="form.idCard" placeholder="请输入身份证号码"/> <Field label="身份证号码" prop="idCard" v-model="form.idCard" placeholder="请输入身份证号码"/>
<Field label="工号" prop="workNum" v-model="form.workNum" placeholder="请输入工号"/> <Field label="工号" prop="workNum" v-model="form.workNum" placeholder="请输入工号"/>
<Field label="政治面貌 " prop="politicalstatus" v-model="form.politicalstatus" type="select" :enumData="dict.politicalstatus" placeholder="请选择政治面貌 "/> <Field label="政治面貌 " prop="politicalstatus" v-model="form.politicalstatus" type="select" :enumData="dict.politicalstatus" placeholder="请选择政治面貌 "/>
<Field label="所属部门" prop="deptId" v-model="form.deptId" placeholder="请输入所属部门"/> <Field label="所属部门" prop="deptId" v-model="form.deptId" :enumData="dict.deptId" placeholder="请输入所属部门"/>
<Field label="所属部门名称" prop="deptName" v-model="form.deptName" placeholder="请输入所属部门名称"/> <Field label="职位ID" prop="jobId" v-model="form.jobId" :enumData="dict.jobId" placeholder="请输入职位ID"/>
<Field label="职位ID" prop="jobId" v-model="form.jobId" placeholder="请输入职位ID"/>
<Field label="职位名称" prop="jobName" v-model="form.jobName" placeholder="请输入职位名称"/>
<Field label="员工类型" prop="staffType" v-model="form.staffType" type="select" :enumData="dict.staffType" placeholder="请选择员工类型"/> <Field label="员工类型" prop="staffType" v-model="form.staffType" type="select" :enumData="dict.staffType" placeholder="请选择员工类型"/>
<Field label="员工状态" prop="status" v-model="form.status" type="select" :enumData="dict.status" placeholder="请选择员工状态"/> <Field label="员工状态" prop="status" v-model="form.status" type="select" :enumData="dict.status" placeholder="请选择员工状态"/>
<Field label="入职时间" prop="entryDate" v-model="form.entryDate" type="date" /> <Field label="入职时间" prop="entryDate" v-model="form.entryDate" type="date" />
......
...@@ -176,6 +176,48 @@ public class TestController { ...@@ -176,6 +176,48 @@ public class TestController {
} }
@GetMapping("downPersonPic")
@UnAuth
public String downPersonPic() {
List<StaffEntity> staffEntities = staffService.find(new StaffQuery());
StaffEntity staffEntity = staffEntities.get(0);
if (!ObjectUtils.isEmpty(staffEntity.getPicUri())) {
ImgReq imgReq = new ImgReq();
imgReq.setUrl(staffEntity.getPicUri());
imgReq.setServerIndexCode(staffEntity.getServerIndexCode());
log.info("req:{}", JSON.toJSONString(imgReq));
//Rest<String> rest = faceService.downloadPicture(imgReq);
try {
InputStream in = faceService.callPostImgs(imgReq);
if (!ObjectUtils.isEmpty(in)) {
MultipartFile file = ServletUtils.getMultipartFile(in, "snap.jpg");
String filePath = uploadService.saveFileUpload(file, "file/fileupload/snap/" + DateUtil.today(), null);
staffEntity.setPhotoPath(filePath);
return filePath;
} else {
return "InputStream is null";
}
} catch (Exception e) {
log.error("下载出错");
}
}
return "null";
}
/**
* 生成模拟数据
* @return
*/
@GetMapping("randomStatData")
@UnAuth
public Rest<Void> randomMockStatData() {
return Rest.ok();
}
public static void main(String[] args) { public static void main(String[] args) {
} }
......
...@@ -87,4 +87,16 @@ public class PerformInfo { ...@@ -87,4 +87,16 @@ public class PerformInfo {
*/ */
private String checkResult; private String checkResult;
/**
* 处理状态(1.未处理,2.已处理)
*/
private Integer checkStatus;
/**
* 巡查时间
*/
private Date createTime;
private String result;
} }
...@@ -72,21 +72,21 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> { ...@@ -72,21 +72,21 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> {
feedbackReq.setFeedBackStartDate(DateUtil.beginOfMonth(DateUtil.parse(feedbackReq.getFeedBackStartDate()).toJdkDate()).toDateStr()); feedbackReq.setFeedBackStartDate(DateUtil.beginOfMonth(DateUtil.parse(feedbackReq.getFeedBackStartDate()).toJdkDate()).toDateStr());
feedbackReq.setFeedBackEndDate(DateUtil.endOfMonth(DateUtil.parse(feedbackReq.getFeedBackStartDate()).toJdkDate()).toDateStr()); feedbackReq.setFeedBackEndDate(DateUtil.endOfMonth(DateUtil.parse(feedbackReq.getFeedBackStartDate()).toJdkDate()).toDateStr());
} }
//PageInfo pageInfo = buildPageInfo(feedbackReq);
PageInfo pageAllInfo = buildPageInfo(feedbackReq); PageInfo pageAllInfo = buildPageInfo(feedbackReq);
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()); List<Long> feedbackIdList = answerService.find(new FeedbackAnswerQuery().staffId(context.getUser().getCustomerId())).stream().map(i -> i.getFeedbackId()).distinct().collect(Collectors.toList());
if(ObjectUtils.isEmpty(feedbackIdList)){ if (ObjectUtils.isEmpty(feedbackIdList)) {
pageAllInfo.setTotalResult(0); pageAllInfo.setTotalResult(0);
model.put(PAGEINFO_KEY, pageAllInfo); model.put(PAGEINFO_KEY, pageAllInfo);
model.put(KEY_RESULT_DATA, new ArrayList<>()); model.put(KEY_RESULT_DATA, new ArrayList<>());
parsePageInfo(model, pageAllInfo); parsePageInfo(model, pageAllInfo);
}else{ } else {
FeedbackQuery feedbackQuery = new FeedbackQuery(); FeedbackQuery feedbackQuery = new FeedbackQuery();
feedbackQuery.setIdList(feedbackIdList); feedbackQuery.setIdList(feedbackIdList);
feedbackQuery.setCreateTimeStart(feedbackReq.getFeedBackStartDate());
feedbackQuery.setCreateTimeEnd(feedbackReq.getFeedBackEndDate());
Result<FeedbackEntity> result = feedbackService.find(feedbackQuery, pageAllInfo, null); Result<FeedbackEntity> result = feedbackService.find(feedbackQuery, pageAllInfo, null);
model.put(PAGEINFO_KEY, result.getPageInfo()); model.put(PAGEINFO_KEY, result.getPageInfo());
model.put(KEY_RESULT_DATA, result.getList()); model.put(KEY_RESULT_DATA, result.getList());
...@@ -94,23 +94,49 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> { ...@@ -94,23 +94,49 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> {
} }
} else { } else {
//未反馈 //未反馈
//查询我的反馈 但是还未回答的 //查询我的反馈 已经回答的
List<Long> feedbackIdList = answerService.find(new FeedbackAnswerQuery().staffId(context.getUser().getCustomerId())).stream().map(i -> i.getFeedbackId()).distinct().collect(Collectors.toList()); List<Long> feedbackIdList = answerService.find(new FeedbackAnswerQuery().staffId(context.getUser().getCustomerId())).stream().map(i -> i.getFeedbackId()).distinct().collect(Collectors.toList());
if (ObjectUtils.isEmpty(feedbackIdList)) {
//全部未反馈
FeedbackStaffQuery feedbackStaffQuery = new FeedbackStaffQuery();
feedbackStaffQuery.setStaffId(context.getUser().getCustomerId());
List<Long> unFeedbackList = feedbackStaffService.find(feedbackStaffQuery).stream().map(i -> i.getFeedbackId()).distinct().collect(Collectors.toList());
FeedbackQuery feedbackQuery = new FeedbackQuery();
feedbackQuery.setIdList(unFeedbackList);
feedbackQuery.setCreateTimeStart(feedbackReq.getFeedBackStartDate());
feedbackQuery.setCreateTimeEnd(feedbackReq.getFeedBackEndDate());
Result<FeedbackEntity> result = feedbackService.find(feedbackQuery, pageAllInfo, null);
model.put(PAGEINFO_KEY, result.getPageInfo());
model.put(KEY_RESULT_DATA, result.getList());
parsePageInfo(model, result.getPageInfo());
} else {
FeedbackStaffQuery feedbackStaffQuery = new FeedbackStaffQuery(); FeedbackStaffQuery feedbackStaffQuery = new FeedbackStaffQuery();
feedbackStaffQuery.setFeedbackIdNotList(feedbackIdList); feedbackStaffQuery.setFeedbackIdNotList(feedbackIdList);
feedbackStaffQuery.setStaffId(context.getUser().getCustomerId()); feedbackStaffQuery.setStaffId(context.getUser().getCustomerId());
List<Long> unfinFeedbackList = feedbackStaffService.find(feedbackStaffQuery).stream().map(i -> i.getFeedbackId()).distinct().collect(Collectors.toList()); List<Long> unfinFeedbackList = feedbackStaffService.find(feedbackStaffQuery).stream().map(i -> i.getFeedbackId()).distinct().collect(Collectors.toList());
if (ObjectUtils.isEmpty(unfinFeedbackList)) {
//都已经反馈过了
pageAllInfo.setTotalResult(0);
model.put(PAGEINFO_KEY, pageAllInfo);
model.put(KEY_RESULT_DATA, new ArrayList<>());
parsePageInfo(model, pageAllInfo);
} else {
FeedbackQuery feedbackQuery = new FeedbackQuery(); FeedbackQuery feedbackQuery = new FeedbackQuery();
feedbackQuery.setIdList(unfinFeedbackList); feedbackQuery.setIdList(unfinFeedbackList);
feedbackQuery.setCreateTimeStart(feedbackReq.getFeedBackStartDate());
feedbackQuery.setCreateTimeEnd(feedbackReq.getFeedBackEndDate());
Result<FeedbackEntity> result = feedbackService.find(feedbackQuery, pageAllInfo, null); Result<FeedbackEntity> result = feedbackService.find(feedbackQuery, pageAllInfo, null);
model.put(PAGEINFO_KEY, result.getPageInfo()); model.put(PAGEINFO_KEY, result.getPageInfo());
model.put(KEY_RESULT_DATA, result.getList()); model.put(KEY_RESULT_DATA, result.getList());
parsePageInfo(model, result.getPageInfo()); parsePageInfo(model, result.getPageInfo());
} }
}
}
rest.setData(model); rest.setData(model);
recordSysLog(request, busiDesc + " 【成功】"); recordSysLog(request, busiDesc + " 【成功】");
} catch (Exception e) { } catch (Exception e) {
...@@ -136,7 +162,7 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> { ...@@ -136,7 +162,7 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> {
//如果时间已经结束 则不能再提交 //如果时间已经结束 则不能再提交
FeedbackEntity feedbackEntity = feedbackService.get(req.getFeedbackId(), context); FeedbackEntity feedbackEntity = feedbackService.get(req.getFeedbackId(), context);
if(ObjectUtils.isEmpty(feedbackEntity)) throw new AppException("未找到当前问卷,请联系管理员!"); if (ObjectUtils.isEmpty(feedbackEntity)) throw new AppException("未找到当前问卷,请联系管理员!");
if (DateUtil.compare(new Date(), feedbackEntity.getFeedbackTimeStart()) < 0) if (DateUtil.compare(new Date(), feedbackEntity.getFeedbackTimeStart()) < 0)
throw new AppException("当前反馈问卷信息还未开始!"); throw new AppException("当前反馈问卷信息还未开始!");
if (DateUtil.compare(new Date(), feedbackEntity.getFeedbackTimeEnd()) > 0) if (DateUtil.compare(new Date(), feedbackEntity.getFeedbackTimeEnd()) > 0)
...@@ -156,15 +182,11 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> { ...@@ -156,15 +182,11 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> {
feedbackAnswerEntity.setCreateTime(new Date()); feedbackAnswerEntity.setCreateTime(new Date());
List<FeedbackAnswerOptionEntity> feedbackAnswerOptionList = feedbackAnswerEntity.getFeedbackAnswerOptionList(); List<FeedbackAnswerOptionEntity> feedbackAnswerOptionList = feedbackAnswerEntity.getFeedbackAnswerOptionList();
for (FeedbackAnswerOptionEntity feedbackAnswerOptionEntity : feedbackAnswerOptionList) { for (FeedbackAnswerOptionEntity feedbackAnswerOptionEntity : feedbackAnswerOptionList) {
feedbackAnswerOptionEntity.setCreateUserId(context.getUser().getId()); feedbackAnswerOptionEntity.setCreateUserId(context.getUser().getId());
feedbackAnswerOptionEntity.setCreateTime(new Date()); feedbackAnswerOptionEntity.setCreateTime(new Date());
} }
answerService.save(feedbackAnswerEntity, context);
} }
answerService.save(feedbackAnswerList, context);
recordSysLog(request, busiDesc + " 【成功】"); recordSysLog(request, busiDesc + " 【成功】");
} catch (Exception e) { } catch (Exception e) {
log.error(busiDesc, e); log.error(busiDesc, e);
......
...@@ -112,8 +112,8 @@ public class InspectApiController extends AbstractBaseController<PerformReq> { ...@@ -112,8 +112,8 @@ public class InspectApiController extends AbstractBaseController<PerformReq> {
} }
log.info("【{}】【请求体】--> 用户:{}", busiDesc, context.getUser().getRealName()); log.info("【{}】【请求体】--> 用户:{}", busiDesc, context.getUser().getRealName());
try { try {
Integer totalTimes=0; Integer totalTimes = 0;
Integer todayTimes=0; Integer todayTimes = 0;
CheckAllRecordQuery checkAllRecordQuery = new CheckAllRecordQuery(); CheckAllRecordQuery checkAllRecordQuery = new CheckAllRecordQuery();
checkAllRecordQuery.setSubMethod(SubMethodEnum.大厅巡查.getValue()); checkAllRecordQuery.setSubMethod(SubMethodEnum.大厅巡查.getValue());
checkAllRecordQuery.setCreateUserId(context.getUser().getId()); checkAllRecordQuery.setCreateUserId(context.getUser().getId());
...@@ -172,6 +172,12 @@ public class InspectApiController extends AbstractBaseController<PerformReq> { ...@@ -172,6 +172,12 @@ public class InspectApiController extends AbstractBaseController<PerformReq> {
List<PerformInfo> collect = allCheckRecord.stream().map(item -> { List<PerformInfo> collect = allCheckRecord.stream().map(item -> {
PerformInfo performInfo = new PerformInfo(); PerformInfo performInfo = new PerformInfo();
BeanUtils.copyProperties(item, performInfo, BeanUtil.getNullPropertyNames(item)); BeanUtils.copyProperties(item, performInfo, BeanUtil.getNullPropertyNames(item));
if (CheckStatusEnum.未处理.getValue() == item.getCheckStatus()) {
performInfo.setResult(CheckStatusEnum.未处理.getDesc());
} else {
performInfo.setResult(item.getCheckResult());
}
return performInfo; return performInfo;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
model.put(KEY_RESULT_DATA, collect); model.put(KEY_RESULT_DATA, collect);
...@@ -186,6 +192,12 @@ public class InspectApiController extends AbstractBaseController<PerformReq> { ...@@ -186,6 +192,12 @@ public class InspectApiController extends AbstractBaseController<PerformReq> {
List<PerformInfo> collect = allCheckRecord.stream().map(item -> { List<PerformInfo> collect = allCheckRecord.stream().map(item -> {
PerformInfo performInfo = new PerformInfo(); PerformInfo performInfo = new PerformInfo();
BeanUtils.copyProperties(item, performInfo, BeanUtil.getNullPropertyNames(item)); BeanUtils.copyProperties(item, performInfo, BeanUtil.getNullPropertyNames(item));
if (CheckStatusEnum.未处理.getValue() == item.getCheckStatus()) {
performInfo.setResult(CheckStatusEnum.未处理.getDesc());
} else {
performInfo.setResult(item.getCheckResult());
}
return performInfo; return performInfo;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
model.put(KEY_RESULT_DATA, collect); model.put(KEY_RESULT_DATA, collect);
...@@ -199,6 +211,12 @@ public class InspectApiController extends AbstractBaseController<PerformReq> { ...@@ -199,6 +211,12 @@ public class InspectApiController extends AbstractBaseController<PerformReq> {
List<PerformInfo> collect = allCheckRecord.stream().map(item -> { List<PerformInfo> collect = allCheckRecord.stream().map(item -> {
PerformInfo performInfo = new PerformInfo(); PerformInfo performInfo = new PerformInfo();
BeanUtils.copyProperties(item, performInfo, BeanUtil.getNullPropertyNames(item)); BeanUtils.copyProperties(item, performInfo, BeanUtil.getNullPropertyNames(item));
if (CheckStatusEnum.未处理.getValue() == item.getCheckStatus()) {
performInfo.setResult(CheckStatusEnum.未处理.getDesc());
} else {
performInfo.setResult(item.getCheckResult());
}
return performInfo; return performInfo;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
model.put(KEY_RESULT_DATA, collect); model.put(KEY_RESULT_DATA, collect);
......
...@@ -119,11 +119,11 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { ...@@ -119,11 +119,11 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
StaffPerformStatQuery staffPerformStatQuery = new StaffPerformStatQuery(); StaffPerformStatQuery staffPerformStatQuery = new StaffPerformStatQuery();
staffPerformStatQuery.setStaffId(context.getUser().getCustomerId()); staffPerformStatQuery.setStaffId(context.getUser().getCustomerId());
staffPerformStatQuery.setYear(DateUtil.year(new Date())); staffPerformStatQuery.setYear(DateUtil.year(new Date()));
staffPerformStatQuery.setMonth(DateUtil.month(new Date())+1); staffPerformStatQuery.setMonth(DateUtil.month(new Date()) + 1);
List<StaffPerformStatEntity> staffPerformStatEntities = staffPerformStatService.find(staffPerformStatQuery); List<StaffPerformStatEntity> staffPerformStatEntities = staffPerformStatService.find(staffPerformStatQuery);
BigDecimal totalScore=new BigDecimal(0.0); BigDecimal totalScore = new BigDecimal(0.0);
if(ObjectUtils.isEmpty(staffPerformStatEntities)){ if (ObjectUtils.isEmpty(staffPerformStatEntities)) {
totalScore = staffPerformStatEntities.stream().map(item -> item.getTotalSubScore()).reduce(BigDecimal.ZERO, BigDecimal::add); totalScore = staffPerformStatEntities.stream().map(item -> item.getTotalSubScore()).reduce(BigDecimal.ZERO, BigDecimal::add);
} }
...@@ -131,9 +131,9 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { ...@@ -131,9 +131,9 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
//今日得分 //今日得分
StaffPerformStatEntity staffPerformStatEntity = staffPerformStatService.selectOne(staffPerformStatQuery); StaffPerformStatEntity staffPerformStatEntity = staffPerformStatService.selectOne(staffPerformStatQuery);
BigDecimal todayScore=new BigDecimal(0.0); BigDecimal todayScore = new BigDecimal(0.0);
if(!ObjectUtils.isEmpty(staffPerformStatEntity)){ if (!ObjectUtils.isEmpty(staffPerformStatEntity)) {
todayScore=staffPerformStatEntity.getTotalSubScore(); todayScore = staffPerformStatEntity.getTotalSubScore();
} }
PerformStatInfo performStatInfo = new PerformStatInfo(); PerformStatInfo performStatInfo = new PerformStatInfo();
...@@ -207,12 +207,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { ...@@ -207,12 +207,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
performInfo.setPerformType(PerformTypeEnum.考勤绩效.getValue()); performInfo.setPerformType(PerformTypeEnum.考勤绩效.getValue());
//判断是否存在申诉 //判断是否存在申诉
PerformAttendAppealEntity entity = appealService.selectOne(new PerformAttendAppealQuery().checkRecordId(item.getId())); PerformAttendAppealEntity entity = appealService.selectOne(new PerformAttendAppealQuery().checkRecordId(item.getId()));
if (!ObjectUtils.isEmpty(entity)) { updateAppealResult(performInfo, entity);
Boolean bool = entity.newEntity();
updateAppealStatus(performInfo, bool, entity.getProcessStatus(), entity.getAppealResult());
} else {
performInfo.setAppealStatus(AppealStatusEnum.未申诉.getValue());
}
return performInfo; return performInfo;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
...@@ -233,12 +228,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { ...@@ -233,12 +228,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
//判断是否存在申诉 //判断是否存在申诉
PerformAttendAppealEntity entity = appealService.selectOne(new PerformAttendAppealQuery().checkRecordId(item.getId())); PerformAttendAppealEntity entity = appealService.selectOne(new PerformAttendAppealQuery().checkRecordId(item.getId()));
if (!ObjectUtils.isEmpty(entity)) { updateAppealResult(performInfo, entity);
Boolean bool = entity.newEntity();
updateAppealStatus(performInfo, bool, entity.getProcessStatus(), entity.getAppealResult());
} else {
performInfo.setAppealStatus(AppealStatusEnum.未申诉.getValue());
}
return performInfo; return performInfo;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
model.put(KEY_RESULT_DATA, collect); model.put(KEY_RESULT_DATA, collect);
...@@ -258,12 +248,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { ...@@ -258,12 +248,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
//判断是否存在申诉 //判断是否存在申诉
PerformAttendAppealEntity entity = appealService.selectOne(new PerformAttendAppealQuery().checkRecordId(item.getId())); PerformAttendAppealEntity entity = appealService.selectOne(new PerformAttendAppealQuery().checkRecordId(item.getId()));
if (!ObjectUtils.isEmpty(entity)) { updateAppealResult(performInfo, entity);
Boolean bool = entity.newEntity();
updateAppealStatus(performInfo, bool, entity.getProcessStatus(), entity.getAppealResult());
} else {
performInfo.setAppealStatus(AppealStatusEnum.未申诉.getValue());
}
return performInfo; return performInfo;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
model.put(KEY_RESULT_DATA, collect); model.put(KEY_RESULT_DATA, collect);
...@@ -283,13 +268,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { ...@@ -283,13 +268,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
//判断是否存在申诉 //判断是否存在申诉
PerformAttendAppealEntity entity = appealService.selectOne(new PerformAttendAppealQuery().checkRecordId(item.getId())); PerformAttendAppealEntity entity = appealService.selectOne(new PerformAttendAppealQuery().checkRecordId(item.getId()));
if (!ObjectUtils.isEmpty(entity)) { updateAppealResult(performInfo, entity);
Boolean bool = entity.newEntity();
updateAppealStatus(performInfo, bool, entity.getProcessStatus(), entity.getAppealResult());
} else {
performInfo.setAppealStatus(AppealStatusEnum.未申诉.getValue());
}
return performInfo; return performInfo;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
model.put(KEY_RESULT_DATA, collect); model.put(KEY_RESULT_DATA, collect);
...@@ -308,12 +287,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { ...@@ -308,12 +287,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
performInfo.setPerformType(PerformTypeEnum.效能绩效.getValue()); performInfo.setPerformType(PerformTypeEnum.效能绩效.getValue());
//判断是否存在申诉 //判断是否存在申诉
PerformAttendAppealEntity entity = appealService.selectOne(new PerformAttendAppealQuery().checkRecordId(item.getId())); PerformAttendAppealEntity entity = appealService.selectOne(new PerformAttendAppealQuery().checkRecordId(item.getId()));
if (!ObjectUtils.isEmpty(entity)) { updateAppealResult(performInfo, entity);
Boolean bool = entity.newEntity();
updateAppealStatus(performInfo, bool, entity.getProcessStatus(), entity.getAppealResult());
} else {
performInfo.setAppealStatus(AppealStatusEnum.未申诉.getValue());
}
return performInfo; return performInfo;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
model.put(KEY_RESULT_DATA, collect); model.put(KEY_RESULT_DATA, collect);
...@@ -333,12 +307,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { ...@@ -333,12 +307,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
//判断是否存在申诉 //判断是否存在申诉
PerformAttendAppealEntity entity = appealService.selectOne(new PerformAttendAppealQuery().checkRecordId(item.getId())); PerformAttendAppealEntity entity = appealService.selectOne(new PerformAttendAppealQuery().checkRecordId(item.getId()));
if (!ObjectUtils.isEmpty(entity)) { updateAppealResult(performInfo, entity);
Boolean bool = entity.newEntity();
updateAppealStatus(performInfo, bool, entity.getProcessStatus(), entity.getAppealResult());
} else {
performInfo.setAppealStatus(AppealStatusEnum.未申诉.getValue());
}
return performInfo; return performInfo;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
model.put(KEY_RESULT_DATA, collect); model.put(KEY_RESULT_DATA, collect);
...@@ -359,6 +328,22 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { ...@@ -359,6 +328,22 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
return rest; return rest;
} }
private void updateAppealResult(PerformInfo performInfo, PerformAttendAppealEntity entity) {
if (!ObjectUtils.isEmpty(entity)) {
Boolean bool = entity.newEntity();
updateAppealStatus(performInfo, bool, entity.getProcessStatus(), entity.getAppealResult());
if (AppealResultEnum.通过.getValue() == entity.getAppealResult()) {
performInfo.setAppealStatus(AppealStatusEnum.申诉通过.getValue());
} else if (AppealResultEnum.不通过.getValue() == entity.getAppealResult()) {
performInfo.setAppealStatus(AppealStatusEnum.申诉拒绝.getValue());
} else {
performInfo.setAppealStatus(AppealStatusEnum.申诉中.getValue());
}
} else {
performInfo.setAppealStatus(AppealStatusEnum.未申诉.getValue());
}
}
private void updateAppealStatus(PerformInfo performInfo, Boolean bool, Integer processStatus, Integer appealResult) { private void updateAppealStatus(PerformInfo performInfo, Boolean bool, Integer processStatus, Integer appealResult) {
if (!bool) { if (!bool) {
performInfo.setAppealStatus(AppealStatusEnum.未申诉.getValue()); performInfo.setAppealStatus(AppealStatusEnum.未申诉.getValue());
......
package com.mortals.xhx.common.utils;
import com.mortals.framework.util.DateUtils;
import com.mortals.xhx.module.check.model.CheckAttendRecordEntity;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryQuery;
import com.mortals.xhx.module.check.service.CheckAttendRecordService;
import com.mortals.xhx.utils.SpringUtils;
import lombok.AllArgsConstructor;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
/**
* 考勤核查后续处理线程
*
* @author:
* @date: 2023/7/17 14:42
*/
@RequiredArgsConstructor
@Slf4j
public class AttendPostServiceThread implements Runnable {
private CheckAttendRecordService checkAttendRecordService;
@NonNull
private CheckAttendRecordEntity entity;
@Override
public void run() {
checkAttendRecordService = SpringUtils.getBean(CheckAttendRecordService.class);
try {
checkAttendRecordService.sendCheckDingTalk(entity);
StaffCheckSummaryQuery query = new StaffCheckSummaryQuery();
query.setStaffId(entity.getStaffId());
query.setCheckTimeStart(DateUtils.getStrDate(entity.getCheckTime()));
query.setCheckTimeEnd(query.getCheckTimeStart());
checkAttendRecordService.summaryCheck(query);
} catch (Exception e) {
log.error("汇总已审核的核查记录出错", e);
}
}
}
package com.mortals.xhx.module.attendance.model; package com.mortals.xhx.module.attendance.model;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel; import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.attendance.model.vo.AttendanceLeaveRecordVo; import com.mortals.xhx.module.attendance.model.vo.AttendanceLeaveRecordVo;
import lombok.Data;
import java.util.Date;
/** /**
* 请假记录信息实体对象 * 请假记录信息实体对象
* *
* @author zxfei * @author zxfei
* @date 2023-04-14 * @date 2023-07-18
*/ */
@Data
public class AttendanceLeaveRecordEntity extends AttendanceLeaveRecordVo { public class AttendanceLeaveRecordEntity extends AttendanceLeaveRecordVo {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
...@@ -75,224 +78,26 @@ public class AttendanceLeaveRecordEntity extends AttendanceLeaveRecordVo { ...@@ -75,224 +78,26 @@ public class AttendanceLeaveRecordEntity extends AttendanceLeaveRecordVo {
* 备注 * 备注
*/ */
private String remark; private String remark;
public AttendanceLeaveRecordEntity(){}
/**
* 获取 请假人id
* @return Long
*/
public Long getLeavePersonId(){
return leavePersonId;
}
/**
* 设置 请假人id
* @param leavePersonId
*/
public void setLeavePersonId(Long leavePersonId){
this.leavePersonId = leavePersonId;
}
/**
* 获取 请假人
* @return String
*/
public String getLeavePerson(){
return leavePerson;
}
/**
* 设置 请假人
* @param leavePerson
*/
public void setLeavePerson(String leavePerson){
this.leavePerson = leavePerson;
}
/**
* 获取 所属部门id
* @return Long
*/
public Long getDeptId(){
return deptId;
}
/**
* 设置 所属部门id
* @param deptId
*/
public void setDeptId(Long deptId){
this.deptId = deptId;
}
/** /**
* 获取 所属部门 * 申请时间
* @return String
*/ */
public String getDeptName(){ private Date appealTime;
return deptName;
}
/** /**
* 设置 所属部门 * 审核结果(1.申请通过,2.申请不通过)
* @param deptName
*/ */
public void setDeptName(String deptName){ private Integer auditResult;
this.deptName = deptName;
}
/** /**
* 获取 电话号码 * 审核说明
* @return String
*/ */
public String getPhoneNumber(){ private String auditDesc;
return phoneNumber;
}
/** /**
* 设置 电话号码 * 审核时间
* @param phoneNumber
*/ */
public void setPhoneNumber(String phoneNumber){ private Date auditTime;
this.phoneNumber = phoneNumber;
}
/** /**
* 获取 请假类型(1.事假,2.调休,3.病假,4.年假,5.产假,6.陪产假,7.婚假,8.例假,9.哺乳假,10.丧假,11.回单位,12.因公请假,13.外出勘验,14.值班补班,15.体检,16.隔离,17.因公外出,18.公休,19.育儿假,20.调回单位,21.探亲假) * 处理状态
* @return Integer
*/ */
public Integer getLeaveType(){ private Integer processStatus;
return leaveType;
}
/**
* 设置 请假类型(1.事假,2.调休,3.病假,4.年假,5.产假,6.陪产假,7.婚假,8.例假,9.哺乳假,10.丧假,11.回单位,12.因公请假,13.外出勘验,14.值班补班,15.体检,16.隔离,17.因公外出,18.公休,19.育儿假,20.调回单位,21.探亲假)
* @param leaveType
*/
public void setLeaveType(Integer leaveType){
this.leaveType = leaveType;
}
/**
* 获取 开始时间
* @return Date
*/
public Date getStartTime(){
return startTime;
}
/**
* 设置 开始时间
* @param startTime
*/
public void setStartTime(Date startTime){
this.startTime = startTime;
}
/**
* 获取 结束时间
* @return Date
*/
public Date getEndTime(){
return endTime;
}
/**
* 设置 结束时间
* @param endTime
*/
public void setEndTime(Date endTime){
this.endTime = endTime;
}
/**
* 获取 时长,单位秒
* @return Integer
*/
public Integer getDuration(){
return duration;
}
/**
* 设置 时长,单位秒
* @param duration
*/
public void setDuration(Integer duration){
this.duration = duration;
}
/**
* 获取 请假事由
* @return String
*/
public String getReason(){
return reason;
}
/**
* 设置 请假事由
* @param reason
*/
public void setReason(String reason){
this.reason = reason;
}
/**
* 获取 审批负责人Id
* @return Long
*/
public Long getApproverId(){
return approverId;
}
/**
* 设置 审批负责人Id
* @param approverId
*/
public void setApproverId(Long approverId){
this.approverId = approverId;
}
/**
* 获取 审批负责人
* @return String
*/
public String getApprover(){
return approver;
}
/**
* 设置 审批负责人
* @param approver
*/
public void setApprover(String approver){
this.approver = approver;
}
/**
* 获取 附件
* @return String
*/
public String getAttachment(){
return attachment;
}
/**
* 设置 附件
* @param attachment
*/
public void setAttachment(String attachment){
this.attachment = attachment;
}
/**
* 获取 附件路径
* @return String
*/
public String getAttachmentPath(){
return attachmentPath;
}
/**
* 设置 附件路径
* @param attachmentPath
*/
public void setAttachmentPath(String attachmentPath){
this.attachmentPath = attachmentPath;
}
/**
* 获取 备注
* @return String
*/
public String getRemark(){
return remark;
}
/**
* 设置 备注
* @param remark
*/
public void setRemark(String remark){
this.remark = remark;
}
@Override @Override
public int hashCode() { public int hashCode() {
return this.getId().hashCode(); return this.getId().hashCode();
...@@ -309,49 +114,29 @@ public class AttendanceLeaveRecordEntity extends AttendanceLeaveRecordVo { ...@@ -309,49 +114,29 @@ public class AttendanceLeaveRecordEntity extends AttendanceLeaveRecordVo {
return false; return false;
} }
public String toString(){
StringBuilder sb = new StringBuilder("");
sb.append(",leavePersonId:").append(getLeavePersonId());
sb.append(",leavePerson:").append(getLeavePerson());
sb.append(",deptId:").append(getDeptId());
sb.append(",deptName:").append(getDeptName());
sb.append(",phoneNumber:").append(getPhoneNumber());
sb.append(",leaveType:").append(getLeaveType());
sb.append(",startTime:").append(getStartTime());
sb.append(",endTime:").append(getEndTime());
sb.append(",duration:").append(getDuration());
sb.append(",reason:").append(getReason());
sb.append(",approverId:").append(getApproverId());
sb.append(",approver:").append(getApprover());
sb.append(",attachment:").append(getAttachment());
sb.append(",attachmentPath:").append(getAttachmentPath());
sb.append(",remark:").append(getRemark());
return sb.toString();
}
public void initAttrValue(){ public void initAttrValue(){
this.leavePersonId = null; this.leavePersonId = -1L;
this.leavePerson = ""; this.leavePerson = "";
this.deptId = null; this.deptId = -1L;
this.deptName = ""; this.deptName = "";
this.phoneNumber = ""; this.phoneNumber = "";
this.leaveType = null; this.leaveType = -1;
this.startTime = null; this.startTime = null;
this.endTime = null; this.endTime = null;
this.duration = null; this.duration = -1;
this.reason = ""; this.reason = "";
this.approverId = null; this.approverId = -1L;
this.approver = ""; this.approver = "";
...@@ -360,5 +145,15 @@ public class AttendanceLeaveRecordEntity extends AttendanceLeaveRecordVo { ...@@ -360,5 +145,15 @@ public class AttendanceLeaveRecordEntity extends AttendanceLeaveRecordVo {
this.attachmentPath = ""; this.attachmentPath = "";
this.remark = ""; this.remark = "";
this.appealTime = null;
this.auditResult = null;
this.auditDesc = "";
this.auditTime = null;
this.processStatus = 1;
} }
} }
\ No newline at end of file
package com.mortals.xhx.module.attendance.web; package com.mortals.xhx.module.attendance.web;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.OrderCol;
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.GoWorkResultEnum; import com.mortals.xhx.common.code.GoWorkResultEnum;
...@@ -70,6 +71,13 @@ public class AttendanceRecordController extends BaseCRUDJsonBodyMappingControlle ...@@ -70,6 +71,13 @@ public class AttendanceRecordController extends BaseCRUDJsonBodyMappingControlle
if (query.getGroupId()!=null){ if (query.getGroupId()!=null){
query.setAttendanceGroupId(query.getGroupId()); query.setAttendanceGroupId(query.getGroupId());
} }
if (ObjectUtils.isEmpty(query.getOrderColList())) {
query.setOrderColList(Arrays.asList(new OrderCol("createTime", OrderCol.DESCENDING)));
} else {
query.getOrderColList().add(new OrderCol("createTime", OrderCol.DESCENDING));
}
super.doListBefore(query, model, context); super.doListBefore(query, model, context);
} }
......
...@@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil; ...@@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil;
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.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.model.OrderCol;
import com.mortals.framework.util.StringUtils; import com.mortals.framework.util.StringUtils;
import com.mortals.framework.utils.ServletUtils; import com.mortals.framework.utils.ServletUtils;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
...@@ -21,6 +22,7 @@ import com.mortals.xhx.module.staff.model.StaffQuery; ...@@ -21,6 +22,7 @@ import com.mortals.xhx.module.staff.model.StaffQuery;
import com.mortals.xhx.module.staff.service.StaffService; import com.mortals.xhx.module.staff.service.StaffService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -29,10 +31,8 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -29,10 +31,8 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.InputStream; import java.io.InputStream;
import java.util.Date; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* *
* 海康考勤打卡记录汇总信息 * 海康考勤打卡记录汇总信息
...@@ -67,6 +67,9 @@ public class AttendanceRecordHikController extends BaseCRUDJsonBodyMappingContro ...@@ -67,6 +67,9 @@ public class AttendanceRecordHikController extends BaseCRUDJsonBodyMappingContro
} }
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void doImportDataBefore(List<AttendanceRecordHikEntity> list, boolean updateSupport, Context context) throws AppException { public void doImportDataBefore(List<AttendanceRecordHikEntity> list, boolean updateSupport, Context context) throws AppException {
...@@ -147,6 +150,13 @@ public class AttendanceRecordHikController extends BaseCRUDJsonBodyMappingContro ...@@ -147,6 +150,13 @@ public class AttendanceRecordHikController extends BaseCRUDJsonBodyMappingContro
String staffName = "%" + query.getStaffName() + "%"; String staffName = "%" + query.getStaffName() + "%";
query.setStaffName(staffName); query.setStaffName(staffName);
} }
if (ObjectUtils.isEmpty(query.getOrderColList())) {
query.setOrderColList(Arrays.asList(new OrderCol("createTime", OrderCol.DESCENDING)));
} else {
query.getOrderColList().add(new OrderCol("createTime", OrderCol.DESCENDING));
}
super.doListBefore(query, model, context); super.doListBefore(query, model, context);
} }
......
...@@ -12,7 +12,7 @@ import lombok.Data; ...@@ -12,7 +12,7 @@ import lombok.Data;
* 考勤绩效记录核查信息实体对象 * 考勤绩效记录核查信息实体对象
* *
* @author zxfei * @author zxfei
* @date 2023-07-16 * @date 2023-07-17
*/ */
@Data @Data
public class CheckAttendRecordEntity extends CheckAttendRecordVo { public class CheckAttendRecordEntity extends CheckAttendRecordVo {
...@@ -29,10 +29,12 @@ public class CheckAttendRecordEntity extends CheckAttendRecordVo { ...@@ -29,10 +29,12 @@ public class CheckAttendRecordEntity extends CheckAttendRecordVo {
/** /**
* 员工姓名 * 员工姓名
*/ */
@Excel(name = "员工姓名")
private String staffName; private String staffName;
/** /**
* 工号 * 工号
*/ */
@Excel(name = "工号")
private String workNum; private String workNum;
/** /**
* 所属部门 * 所属部门
...@@ -41,6 +43,7 @@ public class CheckAttendRecordEntity extends CheckAttendRecordVo { ...@@ -41,6 +43,7 @@ public class CheckAttendRecordEntity extends CheckAttendRecordVo {
/** /**
* 所属部门名称 * 所属部门名称
*/ */
@Excel(name = "所属部门名称")
private String deptName; private String deptName;
/** /**
* 所属考勤组ID * 所属考勤组ID
...@@ -49,10 +52,12 @@ public class CheckAttendRecordEntity extends CheckAttendRecordVo { ...@@ -49,10 +52,12 @@ public class CheckAttendRecordEntity extends CheckAttendRecordVo {
/** /**
* 所属考勤组名称 * 所属考勤组名称
*/ */
@Excel(name = "所属考勤组名称")
private String attendanceGroupName; private String attendanceGroupName;
/** /**
* 考勤时间 * 考勤时间
*/ */
@Excel(name = "考勤时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date attendanceDate; private Date attendanceDate;
/** /**
* 绩效规则id * 绩效规则id
...@@ -61,30 +66,37 @@ public class CheckAttendRecordEntity extends CheckAttendRecordVo { ...@@ -61,30 +66,37 @@ public class CheckAttendRecordEntity extends CheckAttendRecordVo {
/** /**
* 规则名称 * 规则名称
*/ */
@Excel(name = "规则名称")
private String ruleName; private String ruleName;
/** /**
* 增减类型(1.增加,2.扣除) * 增减类型(1.增加,2.扣除)
*/ */
@Excel(name = "增减类型", readConverterExp = "1=增加,2.扣除")
private Integer subAddType; private Integer subAddType;
/** /**
* 扣分或增加分值 * 扣分或增加分值
*/ */
@Excel(name = "扣分或增加分值")
private BigDecimal score; private BigDecimal score;
/** /**
* 上下班时间 * 上下班时间
*/ */
@Excel(name = "上下班时间")
private String goOffTimeStr; private String goOffTimeStr;
/** /**
* 异常时间 * 异常时间
*/ */
@Excel(name = "异常时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date errorTime; private Date errorTime;
/** /**
* 实际打卡时间 * 实际打卡时间
*/ */
@Excel(name = "实际打卡时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date actualAttendTime; private Date actualAttendTime;
/** /**
* 异常处理结果 * 异常处理结果
*/ */
@Excel(name = "异常处理结果")
private String errorResult; private String errorResult;
/** /**
* 核查人员 * 核查人员
...@@ -94,6 +106,7 @@ public class CheckAttendRecordEntity extends CheckAttendRecordVo { ...@@ -94,6 +106,7 @@ public class CheckAttendRecordEntity extends CheckAttendRecordVo {
/** /**
* 核查时间 * 核查时间
*/ */
@Excel(name = "核查时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date checkTime; private Date checkTime;
/** /**
* 核查说明 * 核查说明
...@@ -103,7 +116,7 @@ public class CheckAttendRecordEntity extends CheckAttendRecordVo { ...@@ -103,7 +116,7 @@ public class CheckAttendRecordEntity extends CheckAttendRecordVo {
/** /**
* 核查结果(1.加分或扣分,2.不扣分) * 核查结果(1.加分或扣分,2.不扣分)
*/ */
@Excel(name = "核查结果", readConverterExp = "1=加分或扣分,2.不扣分") @Excel(name = "核查结果", readConverterExp = "加分或扣分=加分或扣分,不扣分=不扣分")
private String checkResult; private String checkResult;
/** /**
* 处理状态(1.未处理,2.已处理) * 处理状态(1.未处理,2.已处理)
...@@ -121,20 +134,19 @@ public class CheckAttendRecordEntity extends CheckAttendRecordVo { ...@@ -121,20 +134,19 @@ public class CheckAttendRecordEntity extends CheckAttendRecordVo {
/** /**
* 附件名称,多个逗号分割 * 附件名称,多个逗号分割
*/ */
@Excel(name = "附件名称,多个逗号分割")
private String fileNames; private String fileNames;
/** /**
* 附件下载地址,多个逗号分割 * 附件下载地址,多个逗号分割
*/ */
@Excel(name = "附件下载地址,多个逗号分割")
private String filePaths; private String filePaths;
/** /**
* 绩效规则分类id * 绩效规则分类id
*/ */
private Long categoryId; private Long categoryId;
/** /**
* 规则名称 * 种类名称
*/ */
@Excel(name = "种类名称")
private String categoryName; private String categoryName;
/** /**
* 扣分人员 * 扣分人员
...@@ -144,6 +156,7 @@ public class CheckAttendRecordEntity extends CheckAttendRecordVo { ...@@ -144,6 +156,7 @@ public class CheckAttendRecordEntity extends CheckAttendRecordVo {
/** /**
* 扣分时间 * 扣分时间
*/ */
@Excel(name = "扣分时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date deductTime; private Date deductTime;
/** /**
* 窗口编号 * 窗口编号
......
...@@ -136,12 +136,10 @@ public class CheckComplainRecordEntity extends CheckComplainRecordVo { ...@@ -136,12 +136,10 @@ public class CheckComplainRecordEntity extends CheckComplainRecordVo {
/** /**
* 附件名称,多个逗号分割 * 附件名称,多个逗号分割
*/ */
@Excel(name = "附件名称,多个逗号分割")
private String fileNames; private String fileNames;
/** /**
* 附件下载地址,多个逗号分割 * 附件下载地址,多个逗号分割
*/ */
@Excel(name = "附件下载地址,多个逗号分割")
private String filePaths; private String filePaths;
/** /**
* 绩效规则分类id * 绩效规则分类id
......
...@@ -53,7 +53,7 @@ public class CheckEffectRecordEntity extends CheckEffectRecordVo { ...@@ -53,7 +53,7 @@ public class CheckEffectRecordEntity extends CheckEffectRecordVo {
/** /**
* 违规类型(1.脱岗,2.离岗,3.玩手机,4.睡觉) * 违规类型(1.脱岗,2.离岗,3.玩手机,4.睡觉)
*/ */
@Excel(name = "违规类型", readConverterExp = "1=脱岗,2.离岗,3.玩手机,4.睡觉") @Excel(name = "违规类型", readConverterExp = "1=脱岗,2=离岗,3=玩手机,4=睡觉")
private Integer irregularType; private Integer irregularType;
/** /**
* 发生时间 * 发生时间
......
...@@ -9,11 +9,11 @@ import com.mortals.framework.model.BaseEntityLong; ...@@ -9,11 +9,11 @@ import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.check.model.vo.CheckGoworkRecordVo; import com.mortals.xhx.module.check.model.vo.CheckGoworkRecordVo;
import lombok.Data; import lombok.Data;
/** /**
* 办件绩效核查信息实体对象 * 办件绩效核查信息实体对象
* *
* @author zxfei * @author zxfei
* @date 2023-07-11 * @date 2023-07-17
*/ */
@Data @Data
public class CheckGoworkRecordEntity extends CheckGoworkRecordVo { public class CheckGoworkRecordEntity extends CheckGoworkRecordVo {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
...@@ -34,6 +34,7 @@ public class CheckGoworkRecordEntity extends CheckGoworkRecordVo { ...@@ -34,6 +34,7 @@ public class CheckGoworkRecordEntity extends CheckGoworkRecordVo {
/** /**
* 工号 * 工号
*/ */
@Excel(name = "工号")
private String workNum; private String workNum;
/** /**
* 窗口编号 * 窗口编号
...@@ -81,6 +82,7 @@ public class CheckGoworkRecordEntity extends CheckGoworkRecordVo { ...@@ -81,6 +82,7 @@ public class CheckGoworkRecordEntity extends CheckGoworkRecordVo {
/** /**
* 扣分方式(1.系统自动,2.人工添加) * 扣分方式(1.系统自动,2.人工添加)
*/ */
@Excel(name = "扣分方式", readConverterExp = "1=系统自动,2.人工添加")
private Integer subMethod; private Integer subMethod;
/** /**
* 扣分人员 * 扣分人员
...@@ -90,6 +92,7 @@ public class CheckGoworkRecordEntity extends CheckGoworkRecordVo { ...@@ -90,6 +92,7 @@ public class CheckGoworkRecordEntity extends CheckGoworkRecordVo {
/** /**
* 扣分时间 * 扣分时间
*/ */
@Excel(name = "扣分时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date deductTime; private Date deductTime;
/** /**
* 扣分或增加分值 * 扣分或增加分值
...@@ -104,6 +107,7 @@ public class CheckGoworkRecordEntity extends CheckGoworkRecordVo { ...@@ -104,6 +107,7 @@ public class CheckGoworkRecordEntity extends CheckGoworkRecordVo {
/** /**
* 核查时间 * 核查时间
*/ */
@Excel(name = "核查时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date checkTime; private Date checkTime;
/** /**
* 核查说明 * 核查说明
...@@ -126,12 +130,10 @@ public class CheckGoworkRecordEntity extends CheckGoworkRecordVo { ...@@ -126,12 +130,10 @@ public class CheckGoworkRecordEntity extends CheckGoworkRecordVo {
/** /**
* 附件名称,多个逗号分割 * 附件名称,多个逗号分割
*/ */
@Excel(name = "附件名称,多个逗号分割")
private String fileNames; private String fileNames;
/** /**
* 附件下载地址,多个逗号分割 * 附件下载地址,多个逗号分割
*/ */
@Excel(name = "附件下载地址,多个逗号分割")
private String filePaths; private String filePaths;
/** /**
* 绩效规则分类id * 绩效规则分类id
...@@ -144,6 +146,7 @@ public class CheckGoworkRecordEntity extends CheckGoworkRecordVo { ...@@ -144,6 +146,7 @@ public class CheckGoworkRecordEntity extends CheckGoworkRecordVo {
/** /**
* 增减类型(1.增加,2.扣除) * 增减类型(1.增加,2.扣除)
*/ */
@Excel(name = "增减类型", readConverterExp = "1=增加,2.扣除")
private Integer subAddType; private Integer subAddType;
@Override @Override
public int hashCode() { public int hashCode() {
......
...@@ -9,11 +9,11 @@ import com.mortals.framework.model.BaseEntityLong; ...@@ -9,11 +9,11 @@ import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.check.model.vo.CheckOtherRecordVo; import com.mortals.xhx.module.check.model.vo.CheckOtherRecordVo;
import lombok.Data; import lombok.Data;
/** /**
* 其它绩效核查信息实体对象 * 其它绩效核查信息实体对象
* *
* @author zxfei * @author zxfei
* @date 2023-07-11 * @date 2023-07-17
*/ */
@Data @Data
public class CheckOtherRecordEntity extends CheckOtherRecordVo { public class CheckOtherRecordEntity extends CheckOtherRecordVo {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
...@@ -29,10 +29,12 @@ public class CheckOtherRecordEntity extends CheckOtherRecordVo { ...@@ -29,10 +29,12 @@ public class CheckOtherRecordEntity extends CheckOtherRecordVo {
/** /**
* 员工姓名 * 员工姓名
*/ */
@Excel(name = "员工姓名")
private String staffName; private String staffName;
/** /**
* 工号 * 工号
*/ */
@Excel(name = "工号")
private String workNum; private String workNum;
/** /**
* 所属部门 * 所属部门
...@@ -41,22 +43,27 @@ public class CheckOtherRecordEntity extends CheckOtherRecordVo { ...@@ -41,22 +43,27 @@ public class CheckOtherRecordEntity extends CheckOtherRecordVo {
/** /**
* 所属部门名称 * 所属部门名称
*/ */
@Excel(name = "所属部门名称")
private String deptName; private String deptName;
/** /**
* 窗口编号 * 窗口编号
*/ */
@Excel(name = "窗口编号")
private String windowNum; private String windowNum;
/** /**
* 违规类型(1.工作纪律) * 违规类型(1.工作纪律)
*/ */
@Excel(name = "违规类型", readConverterExp = "1=工作纪律")
private Integer irregularOtherType; private Integer irregularOtherType;
/** /**
* 发生时间 * 发生时间
*/ */
@Excel(name = "发生时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date happenTime; private Date happenTime;
/** /**
* 持续时间,秒 * 持续时间,秒
*/ */
@Excel(name = "持续时间,秒")
private Integer duration; private Integer duration;
/** /**
* 绩效规则id * 绩效规则id
...@@ -65,10 +72,12 @@ public class CheckOtherRecordEntity extends CheckOtherRecordVo { ...@@ -65,10 +72,12 @@ public class CheckOtherRecordEntity extends CheckOtherRecordVo {
/** /**
* 规则名称 * 规则名称
*/ */
@Excel(name = "规则名称")
private String ruleName; private String ruleName;
/** /**
* 评分标准 * 评分标准
*/ */
@Excel(name = "评分标准")
private String ruleDesc; private String ruleDesc;
/** /**
* 扣分方式(1.系统自动,2.人工添加) * 扣分方式(1.系统自动,2.人工添加)
...@@ -85,6 +94,7 @@ public class CheckOtherRecordEntity extends CheckOtherRecordVo { ...@@ -85,6 +94,7 @@ public class CheckOtherRecordEntity extends CheckOtherRecordVo {
/** /**
* 扣分或增加分值 * 扣分或增加分值
*/ */
@Excel(name = "扣分或增加分值")
private BigDecimal score; private BigDecimal score;
/** /**
* 核查人员 * 核查人员
...@@ -116,12 +126,10 @@ public class CheckOtherRecordEntity extends CheckOtherRecordVo { ...@@ -116,12 +126,10 @@ public class CheckOtherRecordEntity extends CheckOtherRecordVo {
/** /**
* 附件名称,多个逗号分割 * 附件名称,多个逗号分割
*/ */
@Excel(name = "附件名称,多个逗号分割")
private String fileNames; private String fileNames;
/** /**
* 附件下载地址,多个逗号分割 * 附件下载地址,多个逗号分割
*/ */
@Excel(name = "附件下载地址,多个逗号分割")
private String filePaths; private String filePaths;
/** /**
* 绩效规则分类id * 绩效规则分类id
...@@ -130,10 +138,12 @@ public class CheckOtherRecordEntity extends CheckOtherRecordVo { ...@@ -130,10 +138,12 @@ public class CheckOtherRecordEntity extends CheckOtherRecordVo {
/** /**
* 规则名称 * 规则名称
*/ */
@Excel(name = "规则名称")
private String categoryName; private String categoryName;
/** /**
* 增减类型(1.增加,2.扣除) * 增减类型(1.增加,2.扣除)
*/ */
@Excel(name = "增减类型", readConverterExp = "1=增加,2=扣除")
private Integer subAddType; private Integer subAddType;
@Override @Override
public int hashCode() { public int hashCode() {
......
...@@ -9,11 +9,11 @@ import com.mortals.framework.model.BaseEntityLong; ...@@ -9,11 +9,11 @@ import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.check.model.vo.CheckReviewRecordVo; import com.mortals.xhx.module.check.model.vo.CheckReviewRecordVo;
import lombok.Data; import lombok.Data;
/** /**
* 评价差评绩效核查信息实体对象 * 评价差评绩效核查信息实体对象
* *
* @author zxfei * @author zxfei
* @date 2023-07-11 * @date 2023-07-17
*/ */
@Data @Data
public class CheckReviewRecordEntity extends CheckReviewRecordVo { public class CheckReviewRecordEntity extends CheckReviewRecordVo {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
...@@ -48,23 +48,27 @@ public class CheckReviewRecordEntity extends CheckReviewRecordVo { ...@@ -48,23 +48,27 @@ public class CheckReviewRecordEntity extends CheckReviewRecordVo {
/** /**
* 所属部门名称 * 所属部门名称
*/ */
@Excel(name = "所属部门名称")
private String deptName; private String deptName;
/** /**
* 评价结果(1.非常不满意,2.差评) * 评价结果(1.非常不满意,2.差评)
*/ */
@Excel(name = "评价结果", readConverterExp = "1=非常不满意,2=差评")
private Integer reviewResult; private Integer reviewResult;
/** /**
* 评价时间 * 评价时间
*/ */
@Excel(name = "评价时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date reviewTime; private Date reviewTime;
/** /**
* 评价来源(窗口评价系统,导视系统,自助服务系统,微官网,其它) * 评价来源(窗口评价系统,导视系统,自助服务系统,微官网,其它)
*/ */
@Excel(name = "评价来源", readConverterExp = "评价来源(窗口评价系统,导视系统,自助服务系统,微官网,其它)") @Excel(name = "评价来源", readConverterExp = "评价来源")
private String reviewSource; private String reviewSource;
/** /**
* 评价设备 * 评价设备
*/ */
@Excel(name = "评价设备")
private String reviewDevice; private String reviewDevice;
/** /**
* 绩效规则id * 绩效规则id
...@@ -115,6 +119,7 @@ public class CheckReviewRecordEntity extends CheckReviewRecordVo { ...@@ -115,6 +119,7 @@ public class CheckReviewRecordEntity extends CheckReviewRecordVo {
/** /**
* 处理状态(1.未处理,2.已处理) * 处理状态(1.未处理,2.已处理)
*/ */
@Excel(name = "处理状态", readConverterExp = "1=未处理,2=已处理")
private Integer checkStatus; private Integer checkStatus;
/** /**
* 备注 * 备注
...@@ -123,12 +128,10 @@ public class CheckReviewRecordEntity extends CheckReviewRecordVo { ...@@ -123,12 +128,10 @@ public class CheckReviewRecordEntity extends CheckReviewRecordVo {
/** /**
* 附件名称,多个逗号分割 * 附件名称,多个逗号分割
*/ */
@Excel(name = "附件名称,多个逗号分割")
private String fileNames; private String fileNames;
/** /**
* 附件下载地址,多个逗号分割 * 附件下载地址,多个逗号分割
*/ */
@Excel(name = "附件下载地址,多个逗号分割")
private String filePaths; private String filePaths;
/** /**
* 绩效规则分类id * 绩效规则分类id
...@@ -137,10 +140,12 @@ public class CheckReviewRecordEntity extends CheckReviewRecordVo { ...@@ -137,10 +140,12 @@ public class CheckReviewRecordEntity extends CheckReviewRecordVo {
/** /**
* 规则名称 * 规则名称
*/ */
@Excel(name = "规则名称")
private String categoryName; private String categoryName;
/** /**
* 增减类型(1.增加,2.扣除) * 增减类型(1.增加,2.扣除)
*/ */
@Excel(name = "增减类型", readConverterExp = "1=增加,2=扣除")
private Integer subAddType; private Integer subAddType;
@Override @Override
public int hashCode() { public int hashCode() {
......
...@@ -72,4 +72,11 @@ public class CheckAllRecordVo extends BaseEntityLong { ...@@ -72,4 +72,11 @@ public class CheckAllRecordVo extends BaseEntityLong {
private String performType; private String performType;
private String result;
private Integer checkStatus;
private String checkResult;
} }
...@@ -51,4 +51,11 @@ public interface CheckAttendRecordService extends ICRUDService<CheckAttendRecord ...@@ -51,4 +51,11 @@ public interface CheckAttendRecordService extends ICRUDService<CheckAttendRecord
* @return * @return
*/ */
void doSaveDeptPerformStat(StaffCheckSummaryQuery query); void doSaveDeptPerformStat(StaffCheckSummaryQuery query);
/**
* 通知钉钉程序
* @param entity
*/
void sendCheckDingTalk(CheckAttendRecordEntity entity);
} }
\ No newline at end of file
...@@ -8,15 +8,16 @@ import com.mortals.framework.service.IUser; ...@@ -8,15 +8,16 @@ import com.mortals.framework.service.IUser;
import com.mortals.framework.service.impl.AbstractCRUDServiceImpl; import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
import com.mortals.framework.util.DateUtils; import com.mortals.framework.util.DateUtils;
import com.mortals.framework.util.StringUtils; import com.mortals.framework.util.StringUtils;
import com.mortals.framework.util.ThreadPool;
import com.mortals.xhx.base.system.message.MessageService; import com.mortals.xhx.base.system.message.MessageService;
import com.mortals.xhx.common.code.CheckStatusEnum; import com.mortals.xhx.common.code.CheckStatusEnum;
import com.mortals.xhx.common.code.PerformTypeEnum; import com.mortals.xhx.common.code.PerformTypeEnum;
import com.mortals.xhx.common.code.SubMethodEnum; import com.mortals.xhx.common.code.SubMethodEnum;
import com.mortals.xhx.common.code.YesNoEnum; import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.common.utils.AttendPostServiceThread;
import com.mortals.xhx.common.utils.BeanUtil; import com.mortals.xhx.common.utils.BeanUtil;
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;
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.StaffCheckSummaryQuery;
import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryVo; import com.mortals.xhx.module.check.model.vo.StaffCheckSummaryVo;
import com.mortals.xhx.module.check.service.CheckAttendRecordService; import com.mortals.xhx.module.check.service.CheckAttendRecordService;
...@@ -74,9 +75,11 @@ public class CheckAttendRecordServiceImpl extends AbstractCRUDServiceImpl<CheckA ...@@ -74,9 +75,11 @@ public class CheckAttendRecordServiceImpl extends AbstractCRUDServiceImpl<CheckA
protected void saveAfter(CheckAttendRecordEntity entity, Context context) throws AppException { protected void saveAfter(CheckAttendRecordEntity entity, Context context) throws AppException {
//发送钉钉通知信息 //发送钉钉通知信息
if (SubMethodEnum.系统自动.getValue() == entity.getSubMethod()) { if (SubMethodEnum.系统自动.getValue() == entity.getSubMethod()) {
sendCheckDingTalk(entity); AttendPostServiceThread attendPostServiceThread = new AttendPostServiceThread(entity);
ThreadPool.getInstance().execute(attendPostServiceThread);
//sendCheckDingTalk(entity);
} }
try { /* try {
StaffCheckSummaryQuery query = new StaffCheckSummaryQuery(); StaffCheckSummaryQuery query = new StaffCheckSummaryQuery();
query.setStaffId(entity.getStaffId()); query.setStaffId(entity.getStaffId());
query.setCheckTimeStart(DateUtils.getStrDate(entity.getCheckTime())); query.setCheckTimeStart(DateUtils.getStrDate(entity.getCheckTime()));
...@@ -84,11 +87,11 @@ public class CheckAttendRecordServiceImpl extends AbstractCRUDServiceImpl<CheckA ...@@ -84,11 +87,11 @@ public class CheckAttendRecordServiceImpl extends AbstractCRUDServiceImpl<CheckA
summaryCheck(query); summaryCheck(query);
} catch (Exception e) { } catch (Exception e) {
log.error("汇总已审核的核查记录出错", e); log.error("汇总已审核的核查记录出错", e);
} }*/
} }
@Override
private void sendCheckDingTalk(CheckAttendRecordEntity entity) { public void sendCheckDingTalk(CheckAttendRecordEntity entity) {
String ruleStr = String.format("%s/%s/%s", PerformTypeEnum.考勤绩效.getDesc(), entity.getCategoryName(), entity.getRuleName()); String ruleStr = String.format("%s/%s/%s", PerformTypeEnum.考勤绩效.getDesc(), entity.getCategoryName(), entity.getRuleName());
//绩效核查通知 //绩效核查通知
StaffEntity staffCache = staffService.getCache(entity.getStaffId().toString()); StaffEntity staffCache = staffService.getCache(entity.getStaffId().toString());
...@@ -126,13 +129,20 @@ public class CheckAttendRecordServiceImpl extends AbstractCRUDServiceImpl<CheckA ...@@ -126,13 +129,20 @@ public class CheckAttendRecordServiceImpl extends AbstractCRUDServiceImpl<CheckA
entity.setUpdateTime(entity.getCheckTime()); entity.setUpdateTime(entity.getCheckTime());
entity.setCheckStatus(CheckStatusEnum.已处理.getValue()); //处理状态(1.未处理,2.已处理) entity.setCheckStatus(CheckStatusEnum.已处理.getValue()); //处理状态(1.未处理,2.已处理)
dao.update(entity); dao.update(entity);
sendCheckDingTalk(entity);
// sendCheckDingTalk(entity);
try { try {
CheckAttendRecordEntity temp = this.get(entity.getId()); CheckAttendRecordEntity temp = this.get(entity.getId());
if (temp != null) { if (temp != null) {
StaffCheckSummaryQuery query = new StaffCheckSummaryQuery();
AttendPostServiceThread attendPostServiceThread = new AttendPostServiceThread(entity);
ThreadPool.getInstance().execute(attendPostServiceThread);
/* StaffCheckSummaryQuery query = new StaffCheckSummaryQuery();
query.setStaffId(temp.getStaffId()); query.setStaffId(temp.getStaffId());
summaryCheck(query); summaryCheck(query);*/
} }
} catch (Exception e) { } catch (Exception e) {
log.error("汇总已审核的核查记录出错", e); log.error("汇总已审核的核查记录出错", e);
...@@ -142,14 +152,14 @@ public class CheckAttendRecordServiceImpl extends AbstractCRUDServiceImpl<CheckA ...@@ -142,14 +152,14 @@ public class CheckAttendRecordServiceImpl extends AbstractCRUDServiceImpl<CheckA
@Override @Override
public List<StaffCheckSummaryVo> summaryCheck(StaffCheckSummaryQuery query) throws AppException { public List<StaffCheckSummaryVo> summaryCheck(StaffCheckSummaryQuery query) throws AppException {
if (StringUtils.isEmpty(query.getCheckTimeStart()) || StringUtils.isEmpty(query.getCheckTimeStart())) { if (StringUtils.isEmpty(query.getCheckTimeStart()) || StringUtils.isEmpty(query.getCheckTimeStart())) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); /* SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.set(Calendar.DAY_OF_MONTH, 1);
String startTime = format.format(calendar.getTime()); String startTime = format.format(calendar.getTime());
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
String endTime = format.format(calendar.getTime()); String endTime = format.format(calendar.getTime());*/
query.setCheckTimeStart(startTime); query.setCheckTimeStart(DateUtil.beginOfMonth(new Date()).toDateStr());
query.setCheckTimeEnd(endTime); query.setCheckTimeEnd(DateUtil.endOfMonth(new Date()).toDateStr());
} }
List<StaffCheckSummaryVo> summaryVoList = dao.summaryCheck(query); List<StaffCheckSummaryVo> summaryVoList = dao.summaryCheck(query);
if (CollectionUtils.isNotEmpty(summaryVoList)) { if (CollectionUtils.isNotEmpty(summaryVoList)) {
......
...@@ -2,6 +2,7 @@ package com.mortals.xhx.module.dept.model; ...@@ -2,6 +2,7 @@ package com.mortals.xhx.module.dept.model;
import java.util.List; import java.util.List;
import java.util.ArrayList; import java.util.ArrayList;
import com.mortals.xhx.module.dept.model.vo.DeptVo; import com.mortals.xhx.module.dept.model.vo.DeptVo;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import com.mortals.xhx.module.staff.model.StaffEntity; import com.mortals.xhx.module.staff.model.StaffEntity;
...@@ -11,12 +12,13 @@ import org.springframework.util.ObjectUtils; ...@@ -11,12 +12,13 @@ import org.springframework.util.ObjectUtils;
import java.io.Serializable; import java.io.Serializable;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* 部门信息前端映射树结构实体类 * 部门信息前端映射树结构实体类
* *
* @author zxfei * @author zxfei
* @date 2023-03-06 * @date 2023-03-06
*/ */
@Data @Data
public class DeptTreeSelect implements Serializable { public class DeptTreeSelect implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
...@@ -31,6 +33,8 @@ public class DeptTreeSelect implements Serializable { ...@@ -31,6 +33,8 @@ public class DeptTreeSelect implements Serializable {
*/ */
private String label; private String label;
private Integer personNum;
/** /**
* 子节点 * 子节点
*/ */
...@@ -41,15 +45,21 @@ public class DeptTreeSelect implements Serializable { ...@@ -41,15 +45,21 @@ public class DeptTreeSelect implements Serializable {
* 子节点 * 子节点
*/ */
@JsonInclude(JsonInclude.Include.NON_EMPTY) @JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<Map<String,Object>> personList; private List<Map<String, Object>> personList;
public DeptTreeSelect(DeptEntity entity) { public DeptTreeSelect(DeptEntity entity) {
this.id = entity.getId(); this.id = entity.getId();
this.label = entity.getDeptName(); this.label = entity.getDeptName();
if(!ObjectUtils.isEmpty(entity.getChildren())){ this.personNum = entity.getPersonNum();
if (!ObjectUtils.isEmpty(entity.getChildren())) {
this.children = entity.getChildren().stream().map(DeptTreeSelect::new).collect(Collectors.toList()); this.children = entity.getChildren().stream().map(DeptTreeSelect::new).collect(Collectors.toList());
int sum = entity.getChildren().stream().mapToInt(i -> i.getPersonNum()).sum();
this.personNum = this.personNum + sum;
} }
this.personList = entity.getPersonList(); this.personList = entity.getPersonList();
} }
} }
...@@ -82,7 +82,7 @@ public class FeedbackController extends BaseCRUDJsonBodyMappingController<Feedba ...@@ -82,7 +82,7 @@ public class FeedbackController extends BaseCRUDJsonBodyMappingController<Feedba
} }
if (!ObjectUtils.isEmpty(context) && !ObjectUtils.isEmpty(context.getUser())) { if (!ObjectUtils.isEmpty(context) && !ObjectUtils.isEmpty(context.getUser())) {
List<FeedbackAnswerEntity> feedbackAnswerEntities = feedbackAnswerService.find(new FeedbackAnswerQuery().feedbackId(entity.getFeedbackId()).staffId(context.getUser().getCustomerId())); List<FeedbackAnswerEntity> feedbackAnswerEntities = feedbackAnswerService.find(new FeedbackAnswerQuery().feedbackId(entity.getId()).staffId(context.getUser().getCustomerId()));
if (!ObjectUtils.isEmpty(feedbackAnswerEntities)) { if (!ObjectUtils.isEmpty(feedbackAnswerEntities)) {
entity.setFeedbackAnswerList(feedbackAnswerEntities); entity.setFeedbackAnswerList(feedbackAnswerEntities);
} }
......
...@@ -12,7 +12,7 @@ import lombok.Data; ...@@ -12,7 +12,7 @@ import lombok.Data;
* 员工基本信息实体对象 * 员工基本信息实体对象
* *
* @author zxfei * @author zxfei
* @date 2023-07-07 * @date 2023-07-18
*/ */
@Data @Data
public class StaffEntity extends StaffVo { public class StaffEntity extends StaffVo {
...@@ -21,10 +21,12 @@ public class StaffEntity extends StaffVo { ...@@ -21,10 +21,12 @@ public class StaffEntity extends StaffVo {
/** /**
* 员工姓名 * 员工姓名
*/ */
@Excel(name = "员工姓名")
private String name; private String name;
/** /**
* 性别(1.男,2.女) * 性别(1.男,2.女)
*/ */
@Excel(name = "性别", readConverterExp = "1=男,2.女")
private Integer gender; private Integer gender;
/** /**
* 出生日期 * 出生日期
...@@ -37,14 +39,17 @@ public class StaffEntity extends StaffVo { ...@@ -37,14 +39,17 @@ public class StaffEntity extends StaffVo {
/** /**
* 联系电话 * 联系电话
*/ */
@Excel(name = "联系电话")
private String phoneNumber; private String phoneNumber;
/** /**
* 身份证号码 * 身份证号码
*/ */
@Excel(name = "身份证号码")
private String idCard; private String idCard;
/** /**
* 工号 * 工号
*/ */
@Excel(name = "工号")
private String workNum; private String workNum;
/** /**
* 政治面貌 (1.中共党员,2.中共预备党员,3.共青团员,4.群众,5.其它) * 政治面貌 (1.中共党员,2.中共预备党员,3.共青团员,4.群众,5.其它)
...@@ -57,6 +62,7 @@ public class StaffEntity extends StaffVo { ...@@ -57,6 +62,7 @@ public class StaffEntity extends StaffVo {
/** /**
* 所属部门名称 * 所属部门名称
*/ */
@Excel(name = "所属部门名称")
private String deptName; private String deptName;
/** /**
* 职位ID * 职位ID
...@@ -65,14 +71,17 @@ public class StaffEntity extends StaffVo { ...@@ -65,14 +71,17 @@ public class StaffEntity extends StaffVo {
/** /**
* 职位名称 * 职位名称
*/ */
@Excel(name = "职位名称")
private String positionName; private String positionName;
/** /**
* 员工类型(1.全职,2.兼职,3.实习) * 员工类型(1.全职,2.兼职,3.实习)
*/ */
@Excel(name = "员工类型")
private Integer staffType; private Integer staffType;
/** /**
* 员工状态(1.正式,2.试用,3.离职) * 员工状态(1.正式,2.试用,3.离职)
*/ */
@Excel(name = "员工状态", readConverterExp = "1=正式,2=试用,3=离职")
private Integer status; private Integer status;
/** /**
* 员工来源(1.外部,2.内部) * 员工来源(1.外部,2.内部)
...@@ -85,6 +94,7 @@ public class StaffEntity extends StaffVo { ...@@ -85,6 +94,7 @@ public class StaffEntity extends StaffVo {
/** /**
* 入职时间 * 入职时间
*/ */
@Excel(name = "入职时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date entryDate; private Date entryDate;
/** /**
* 转正时间 * 转正时间
...@@ -113,6 +123,7 @@ public class StaffEntity extends StaffVo { ...@@ -113,6 +123,7 @@ public class StaffEntity extends StaffVo {
/** /**
* 绩效分数 * 绩效分数
*/ */
@Excel(name = "绩效分数")
private BigDecimal score; private BigDecimal score;
/** /**
* 员工登录名 * 员工登录名
......
...@@ -2,6 +2,8 @@ package com.mortals.xhx.module.staff.web; ...@@ -2,6 +2,8 @@ package com.mortals.xhx.module.staff.web;
import com.mortals.framework.exception.AppException; 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.module.dept.model.DeptQuery;
import com.mortals.xhx.module.dept.service.DeptService;
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;
...@@ -36,6 +38,9 @@ public class StaffPerformSummaryController extends BaseCRUDJsonBodyMappingContro ...@@ -36,6 +38,9 @@ public class StaffPerformSummaryController extends BaseCRUDJsonBodyMappingContro
@Autowired @Autowired
private ParamService paramService; private ParamService paramService;
@Autowired
private DeptService deptService;
public StaffPerformSummaryController(){ public StaffPerformSummaryController(){
super.setModuleDesc( "员工绩效统计"); super.setModuleDesc( "员工绩效统计");
...@@ -44,6 +49,7 @@ public class StaffPerformSummaryController extends BaseCRUDJsonBodyMappingContro ...@@ -44,6 +49,7 @@ public class StaffPerformSummaryController extends BaseCRUDJsonBodyMappingContro
@Override @Override
protected void init(Map<String, Object> model, Context context) { protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "month", paramService.getParamBySecondOrganize("StaffPerformSummary","month")); this.addDict(model, "month", paramService.getParamBySecondOrganize("StaffPerformSummary","month"));
this.addDict(model, "deptId", deptService.find(new DeptQuery()).stream().collect(Collectors.toMap(x -> x.getId().toString(), y -> y.getDeptName(), (o, n) -> n)));
super.init(model, context); super.init(model, context);
} }
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<select id="getList" parameterType="com.mortals.xhx.module.check.model.CheckAllRecordQuery" resultType="com.mortals.xhx.module.check.model.vo.CheckAllRecordVo"> <select id="getList" parameterType="com.mortals.xhx.module.check.model.CheckAllRecordQuery" resultType="com.mortals.xhx.module.check.model.vo.CheckAllRecordVo">
SELECT * FROM ( SELECT * FROM (
SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName,subAddType,score,subMethod,checkTime,deductTime,1 AS checkType ,'attend' AS performType FROM mortals_xhx_check_attend_record WHERE 1=1 SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName,subAddType,checkStatus,checkResult,score,subMethod,checkTime,deductTime,1 AS checkType ,'attend' AS performType FROM mortals_xhx_check_attend_record WHERE 1=1
<if test="checkStatus != null and checkStatus!=''"> AND checkStatus = #{checkStatus} </if> <if test="checkStatus != null and checkStatus!=''"> AND checkStatus = #{checkStatus} </if>
<if test="subMethod != null and subMethod!=''"> AND subMethod = #{subMethod} </if> <if test="subMethod != null and subMethod!=''"> AND subMethod = #{subMethod} </if>
<if test="subAddType != null and subAddType!=''"> AND subAddType = #{subAddType} </if> <if test="subAddType != null and subAddType!=''"> AND subAddType = #{subAddType} </if>
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<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> <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>
<if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if> <if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if>
UNION UNION
SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName,subAddType,score,subMethod,checkTime,deductTime,4 AS checkType ,'effect' AS performType FROM mortals_xhx_check_effect_record WHERE 1=1 SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName,subAddType,checkStatus,checkResult,score,subMethod,checkTime,deductTime,4 AS checkType ,'effect' AS performType FROM mortals_xhx_check_effect_record WHERE 1=1
<if test="checkStatus != null and checkStatus!=''"> AND checkStatus = #{checkStatus} </if> <if test="checkStatus != null and checkStatus!=''"> AND checkStatus = #{checkStatus} </if>
<if test="subMethod != null and subMethod!=''"> AND subMethod = #{subMethod} </if> <if test="subMethod != null and subMethod!=''"> AND subMethod = #{subMethod} </if>
<if test="subAddType != null and subAddType!=''"> AND subAddType = #{subAddType} </if> <if test="subAddType != null and subAddType!=''"> AND subAddType = #{subAddType} </if>
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
<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> <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>
<if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if> <if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if>
UNION UNION
SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName,subAddType,score,subMethod,checkTime, deductTime,6 AS checkType ,'complain' AS performType FROM mortals_xhx_check_complain_record WHERE 1=1 SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName,subAddType,checkStatus,checkResult,score,subMethod,checkTime, deductTime,6 AS checkType ,'complain' AS performType FROM mortals_xhx_check_complain_record WHERE 1=1
<if test="checkStatus != null and checkStatus!=''"> AND checkStatus = #{checkStatus} </if> <if test="checkStatus != null and checkStatus!=''"> AND checkStatus = #{checkStatus} </if>
<if test="subMethod != null and subMethod!=''"> AND subMethod = #{subMethod} </if> <if test="subMethod != null and subMethod!=''"> AND subMethod = #{subMethod} </if>
<if test="subAddType != null and subAddType!=''"> AND subAddType = #{subAddType} </if> <if test="subAddType != null and subAddType!=''"> AND subAddType = #{subAddType} </if>
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
<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> <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>
<if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if> <if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if>
UNION UNION
SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName, subAddType,score,subMethod,checkTime, deductTime,3 AS checkType ,'gowork' AS performType FROM mortals_xhx_check_gowork_record WHERE 1=1 SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName, subAddType,checkStatus,checkResult,score,subMethod,checkTime, deductTime,3 AS checkType ,'gowork' AS performType FROM mortals_xhx_check_gowork_record WHERE 1=1
<if test="checkStatus != null and checkStatus!=''"> AND checkStatus = #{checkStatus} </if> <if test="checkStatus != null and checkStatus!=''"> AND checkStatus = #{checkStatus} </if>
<if test="subMethod != null and subMethod!=''"> AND subMethod = #{subMethod} </if> <if test="subMethod != null and subMethod!=''"> AND subMethod = #{subMethod} </if>
<if test="subAddType != null and subAddType!=''"> AND subAddType = #{subAddType} </if> <if test="subAddType != null and subAddType!=''"> AND subAddType = #{subAddType} </if>
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
<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> <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>
<if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if> <if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if>
UNION UNION
SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName,subAddType,score,subMethod,checkTime, deductTime,2 AS checkType ,'review' AS performType FROM mortals_xhx_check_review_record WHERE 1=1 SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName,subAddType,checkStatus,checkResult,score,subMethod,checkTime, deductTime,2 AS checkType ,'review' AS performType FROM mortals_xhx_check_review_record WHERE 1=1
<if test="checkStatus != null and checkStatus!=''"> AND checkStatus = #{checkStatus} </if> <if test="checkStatus != null and checkStatus!=''"> AND checkStatus = #{checkStatus} </if>
<if test="subMethod != null and subMethod!=''"> AND subMethod = #{subMethod} </if> <if test="subMethod != null and subMethod!=''"> AND subMethod = #{subMethod} </if>
<if test="subAddType != null and subAddType!=''"> AND subAddType = #{subAddType} </if> <if test="subAddType != null and subAddType!=''"> AND subAddType = #{subAddType} </if>
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
<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> <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>
<if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if> <if test="createUserId != null and createUserId!=''"> AND createUserId = #{createUserId} </if>
UNION UNION
SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName,subAddType,score,subMethod,checkTime, deductTime,5 AS checkType ,'other' AS performType FROM mortals_xhx_check_other_record WHERE 1=1 SELECT id,recordId,staffId,staffName,workNum,deptId,deptName,ruleId,ruleName,subAddType,checkStatus,checkResult,score,subMethod,checkTime, deductTime,5 AS checkType ,'other' AS performType FROM mortals_xhx_check_other_record WHERE 1=1
<if test="checkStatus != null and checkStatus!=''"> AND checkStatus = #{checkStatus} </if> <if test="checkStatus != null and checkStatus!=''"> AND checkStatus = #{checkStatus} </if>
<if test="subMethod != null and subMethod!=''"> AND subMethod = #{subMethod} </if> <if test="subMethod != null and subMethod!=''"> AND subMethod = #{subMethod} </if>
<if test="subAddType != null and subAddType!=''"> AND subAddType = #{subAddType} </if> <if test="subAddType != null and subAddType!=''"> AND subAddType = #{subAddType} </if>
......
...@@ -721,3 +721,44 @@ INSERT INTO `mortals_xhx_param` VALUES (null, '员工类型', 'StaffOnboard', 's ...@@ -721,3 +721,44 @@ INSERT INTO `mortals_xhx_param` VALUES (null, '员工类型', 'StaffOnboard', 's
INSERT INTO `mortals_xhx_param` VALUES (null, '员工状态', 'StaffOnboard', 'onBoardStatus', '1', '待入职', 1, 4, 0, 'onBoardStatus', NULL, NULL, NULL); INSERT INTO `mortals_xhx_param` VALUES (null, '员工状态', 'StaffOnboard', 'onBoardStatus', '1', '待入职', 1, 4, 0, 'onBoardStatus', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '员工状态', 'StaffOnboard', 'onBoardStatus', '2', '试用中', 1, 4, 0, 'onBoardStatus', NULL, NULL, NULL); INSERT INTO `mortals_xhx_param` VALUES (null, '员工状态', 'StaffOnboard', 'onBoardStatus', '2', '试用中', 1, 4, 0, 'onBoardStatus', NULL, NULL, NULL);
INSERT INTO `mortals_xhx_param` VALUES (null, '员工状态', 'StaffOnboard', 'onBoardStatus', '3', '超期', 1, 4, 0, 'onBoardStatus', NULL, NULL, NULL); INSERT INTO `mortals_xhx_param` VALUES (null, '员工状态', 'StaffOnboard', 'onBoardStatus', '3', '超期', 1, 4, 0, 'onBoardStatus', NULL, NULL, NULL);
-- ----------------------------
2023-7-17
-- ----------------------------
-- ----------------------------
-- 请假记录信息表
-- ----------------------------
DROP TABLE IF EXISTS `mortals_xhx_attendance_leave_record`;
CREATE TABLE mortals_xhx_attendance_leave_record(
`id` bigint(20) AUTO_INCREMENT COMMENT '序号,主键,自增长',
`leavePersonId` bigint(20) NOT NULL COMMENT '请假人id',
`leavePerson` varchar(64) COMMENT '请假人',
`deptId` bigint(20) COMMENT '所属部门id',
`deptName` varchar(256) COMMENT '所属部门',
`phoneNumber` varchar(20) COMMENT '电话号码',
`leaveType` tinyint(2) COMMENT '请假类型(1.事假,2.调休,3.病假,4.年假,5.产假,6.陪产假,7.婚假,8.例假,9.哺乳假,10.丧假,11.回单位,12.因公请假,13.外出勘验,14.值班补班,15.体检,16.隔离,17.因公外出,18.公休,19.育儿假,20.调回单位,21.探亲假)',
`startTime` datetime COMMENT '开始时间',
`endTime` datetime COMMENT '结束时间',
`duration` int(9) COMMENT '时长,单位秒',
`reason` text COMMENT '请假事由',
`approverId` bigint(20) COMMENT '审批负责人Id',
`approver` varchar(64) COMMENT '审批负责人',
`attachment` varchar(255) COMMENT '附件',
`attachmentPath` varchar(255) COMMENT '附件路径',
`remark` varchar(255) COMMENT '备注',
`createUserId` bigint(20) COMMENT '创建用户',
`createTime` datetime COMMENT '创建时间',
`updateUserId` bigint(20) COMMENT '更新用户',
`updateTime` datetime COMMENT '更新时间',
`appealTime` datetime COMMENT '申请时间',
`auditResult` tinyint(1) COMMENT '审核结果(1.申请通过,2.申请不通过)',
`auditDesc` varchar(64) COMMENT '审核说明',
`auditTime` datetime COMMENT '审核时间',
`processStatus` tinyint(1) DEFAULT '1' COMMENT '处理状态',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='请假记录信息';
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