Merge branch 'dev' of http://62.234.3.186:3000/sxyanzhu/jhprjv2 into dev
commit
09b0a22862
|
@ -133,7 +133,7 @@ public class Constants
|
|||
/**
|
||||
* 定时任务白名单配置(仅允许访问的包名,如其他需要可以自行添加)
|
||||
*/
|
||||
public static final String[] JOB_WHITELIST_STR = { "com.ruoyi" };
|
||||
public static final String[] JOB_WHITELIST_STR = { "com.ruoyi","com.yanzhu.jh"};
|
||||
|
||||
/**
|
||||
* 定时任务违规的字符
|
||||
|
|
|
@ -42,3 +42,11 @@ export function delAttendanceWorker(id) {
|
|||
method: 'delete'
|
||||
})
|
||||
}
|
||||
|
||||
export function queryAttendanceData(data){
|
||||
return request({
|
||||
url: '/project/attendanceWorker/queryAttendanceData',
|
||||
method: 'post',
|
||||
data:data
|
||||
})
|
||||
}
|
||||
|
|
|
@ -1,154 +1,90 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="厂商编号参考字典attendance_vendors" prop="vendorsCode">
|
||||
<el-input
|
||||
v-model="queryParams.vendorsCode"
|
||||
placeholder="请输入厂商编号参考字典attendance_vendors"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-form-item label="项目名称" prop="projectId">
|
||||
<el-select v-model="queryParams.projectId" placeholder="请选择项目" clearable @change="doQuerySub">
|
||||
<el-option v-for="(item, index) in projectOptions" :key="index" :label="item.projectName" :value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="工人Id" prop="workerId">
|
||||
<el-input
|
||||
v-model="queryParams.workerId"
|
||||
placeholder="请输入工人Id"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-form-item label="总包单位" prop="subDeptId">
|
||||
<el-select v-model="queryParams.subDeptId" placeholder="请选择总包单位" clearable>
|
||||
<el-option v-for="(item, index) in depts" :key="index" :label="item.deptName" :value="item.deptId">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="考勤时间yyyy-MM-dd HH:mm:ss" prop="attendanceTime">
|
||||
<el-input
|
||||
v-model="queryParams.attendanceTime"
|
||||
placeholder="请输入考勤时间yyyy-MM-dd HH:mm:ss"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="设备编号" prop="deviceCode">
|
||||
<el-input
|
||||
v-model="queryParams.deviceCode"
|
||||
placeholder="请输入设备编号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="作业面Id" prop="workPointId">
|
||||
<el-input
|
||||
v-model="queryParams.workPointId"
|
||||
placeholder="请输入作业面Id"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="${comment}" prop="state">
|
||||
<el-input
|
||||
v-model="queryParams.state"
|
||||
placeholder="请输入${comment}"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="${comment}" prop="isDel">
|
||||
<el-input
|
||||
v-model="queryParams.isDel"
|
||||
placeholder="请输入${comment}"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-form-item label="日期" prop="createBy">
|
||||
<el-date-picker v-model="queryParams.createBy" type="date" placeholder="选择日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||
<el-button type="warning" plain icon="el-icon-setting" size="mini" @click="handleSetting"
|
||||
v-hasPermi="['project:attendanceConfig:edit']">设置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-row :gutter="10" class="mb8" v-if="1 == 2">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['project:attendance:add']"
|
||||
>新增</el-button>
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
|
||||
v-hasPermi="['project:attendance:add']">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
:disabled="single"
|
||||
@click="handleUpdate"
|
||||
v-hasPermi="['project:attendance:edit']"
|
||||
>修改</el-button>
|
||||
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
|
||||
v-hasPermi="['project:attendance:edit']">修改</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
plain
|
||||
icon="el-icon-delete"
|
||||
size="mini"
|
||||
:disabled="multiple"
|
||||
@click="handleDelete"
|
||||
v-hasPermi="['project:attendance:remove']"
|
||||
>删除</el-button>
|
||||
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
|
||||
v-hasPermi="['project:attendance:remove']">删除</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="warning"
|
||||
plain
|
||||
icon="el-icon-download"
|
||||
size="mini"
|
||||
@click="handleExport"
|
||||
v-hasPermi="['project:attendance:export']"
|
||||
>导出</el-button>
|
||||
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
|
||||
v-hasPermi="['project:attendance:export']">导出</el-button>
|
||||
|
||||
|
||||
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="attendanceList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="${comment}" align="center" prop="id" />
|
||||
<el-table-column label="厂商编号参考字典attendance_vendors" align="center" prop="vendorsCode" />
|
||||
<el-table-column label="工人Id" align="center" prop="workerId" />
|
||||
<el-table-column label="进门还是出门E进,L出" align="center" prop="attendanceType" />
|
||||
<el-table-column label="考勤时间yyyy-MM-dd HH:mm:ss" align="center" prop="attendanceTime" />
|
||||
<el-table-column label="设备编号" align="center" prop="deviceCode" />
|
||||
<el-table-column label="作业面Id" align="center" prop="workPointId" />
|
||||
<el-table-column label="服务返回的JSON" align="center" prop="other" />
|
||||
<el-table-column label="${comment}" align="center" prop="state" />
|
||||
<el-table-column label="${comment}" align="center" prop="remark" />
|
||||
<el-table-column label="${comment}" align="center" prop="isDel" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<el-table-column label="照片" align="center" prop="id">
|
||||
<template slot-scope="{row}">
|
||||
<el-image :src="row.recentPhoto" :preview-src-list="[row.recentPhoto]" style="height:60px"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="姓名" align="center" prop="name" />
|
||||
<el-table-column label="籍贯" align="center" prop="nativePlace" />
|
||||
<el-table-column label="性别" align="center" prop="attendanceType" >
|
||||
<template slot-scope="{row}">{{ row.gender==1?'女':'男' }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="进场时间" align="center" prop="inTime">
|
||||
<template slot-scope="{row}">{{ row.inTime|formatDateTime }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="离场时间" align="center" prop="outTime">
|
||||
<template slot-scope="{row}">{{ row.outTime|formatDateTime }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="状态" align="center" prop="status">
|
||||
<template slot-scope="{row}">{{ row.status==1?'退场':'进场' }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="分包商名称" align="center" prop="companyName" />
|
||||
<el-table-column label="所属班组" align="center" prop="groupName" />
|
||||
<el-table-column label="工种" align="center" prop="workTypeName" />
|
||||
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" v-if="1==2">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['project:attendance:edit']"
|
||||
>修改</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['project:attendance:remove']"
|
||||
>删除</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['project:attendance:edit']">修改</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
|
||||
v-hasPermi="['project:attendance:remove']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
|
||||
@pagination="getList" />
|
||||
|
||||
<!-- 添加或修改劳务实名制管理对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||
|
@ -186,18 +122,23 @@
|
|||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<attConfigDrawer ref="attDrawer"></attConfigDrawer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listAttendance, getAttendance, delAttendance, addAttendance, updateAttendance } from "@/api/project/attendance";
|
||||
|
||||
import { listAttendanceWorker, getAttendanceWorker, delAttendanceWorker, addAttendanceWorker, updateAttendanceWorker, queryAttendanceData } from "@/api/project/attendanceWorker";
|
||||
import attConfigDrawer from '../attendanceConfig/attendanceConfigDrawer.vue'
|
||||
export default {
|
||||
name: "Attendance",
|
||||
components: {
|
||||
attConfigDrawer,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
loading: true,
|
||||
loading: false,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 非单个禁用
|
||||
|
@ -216,37 +157,72 @@ export default {
|
|||
open: false,
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
vendorsCode:'gld',
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
vendorsCode: null,
|
||||
workerId: null,
|
||||
attendanceType: null,
|
||||
attendanceTime: null,
|
||||
deviceCode: null,
|
||||
workPointId: null,
|
||||
other: null,
|
||||
state: null,
|
||||
isDel: null,
|
||||
projectId:null,
|
||||
subDeptId:null,
|
||||
createBy:new Date()
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
// 表单校验
|
||||
rules: {
|
||||
}
|
||||
},
|
||||
projectOptions: [],
|
||||
depts: []
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
//this.getList();
|
||||
this.$api.publics.getMyProjectList({}).then((response) => {
|
||||
this.projectOptions = response.rows;
|
||||
});
|
||||
/*
|
||||
queryAttendanceData('2023-09-25').then(d=>{
|
||||
debugger
|
||||
})*/
|
||||
},
|
||||
methods: {
|
||||
doQuerySub() {
|
||||
let tmps = this.prjDept2 && this.prjDept2[this.queryParams.projectId] ? this.prjDept2[this.queryParams.projectId] || [] : [];
|
||||
if (tmps.length > 0) {
|
||||
this.depts = tmps;
|
||||
if (tmps.length == 1) {
|
||||
this.queryParams.subDeptId = tmps[0].deptId;
|
||||
} else {
|
||||
this.queryParams.subDeptId = '';
|
||||
}
|
||||
return;
|
||||
}
|
||||
this.$api.publics.queryUnitList({
|
||||
projectId: this.queryParams.projectId,
|
||||
unitTypes: "2".split(","),
|
||||
}).then((d) => {
|
||||
let objs = d.rows || [];
|
||||
if (!this.prjDept2) {
|
||||
this.prjDept2 = {};
|
||||
}
|
||||
this.prjDept2[this.queryParams.projectId] = objs;
|
||||
this.depts = objs;
|
||||
if (objs.length == 1) {
|
||||
this.queryParams.subDeptId = objs[0].deptId;
|
||||
} else {
|
||||
this.queryParams.subDeptId = '';
|
||||
}
|
||||
});
|
||||
},
|
||||
handleSetting() {
|
||||
this.$refs.attDrawer.show();
|
||||
},
|
||||
/** 查询劳务实名制管理列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
listAttendance(this.queryParams).then(response => {
|
||||
this.loading = true;
|
||||
queryAttendanceData(this.queryParams).then(response=>{
|
||||
this.attendanceList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
});
|
||||
})
|
||||
},
|
||||
// 取消按钮
|
||||
cancel() {
|
||||
|
@ -287,7 +263,7 @@ export default {
|
|||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.id)
|
||||
this.single = selection.length!==1
|
||||
this.single = selection.length !== 1
|
||||
this.multiple = !selection.length
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
|
@ -329,12 +305,12 @@ export default {
|
|||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids;
|
||||
this.$modal.confirm('是否确认删除劳务实名制管理编号为"' + ids + '"的数据项?').then(function() {
|
||||
this.$modal.confirm('是否确认删除劳务实名制管理编号为"' + ids + '"的数据项?').then(function () {
|
||||
return delAttendance(ids);
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {});
|
||||
}).catch(() => { });
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
<template>
|
||||
<div class="project-attendance-config-drawer" v-if="isOpen">
|
||||
<el-drawer v-if="isOpen" :visible.sync="isOpen" direction="rtl" size="70%" style="padding-left: 20px">
|
||||
<template slot="title">
|
||||
<div>{{ title + " 【考勤配置】" }}</div>
|
||||
</template>
|
||||
<div>
|
||||
<main-index ref="main"></main-index>
|
||||
</div>
|
||||
</el-drawer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import mainIndex from './index.vue'
|
||||
export default {
|
||||
components:{
|
||||
mainIndex
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isOpen: false,
|
||||
title: '',
|
||||
};
|
||||
},
|
||||
|
||||
mounted() {
|
||||
|
||||
},
|
||||
|
||||
methods: {
|
||||
show() {
|
||||
this.title = "";
|
||||
this.isOpen = true;
|
||||
setTimeout(()=>{
|
||||
this.$refs.main.init();
|
||||
},400);
|
||||
},
|
||||
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.project-attendance-config-drawer {
|
||||
::v-deep .el-drawer__header {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
::v-deep .el-drawer__body {
|
||||
padding: 12px 24px;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -1,53 +1,17 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="项目编号" prop="projectId">
|
||||
<el-input
|
||||
v-model="queryParams.projectId"
|
||||
placeholder="请输入项目编号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-form-item label="项目名称" prop="projectId">
|
||||
<el-select v-model="queryParams.projectId" placeholder="请选择项目" clearable @change="doQuerySub">
|
||||
<el-option v-for="(item, index) in projectOptions" :key="index" :label="item.projectName" :value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="总包单位" prop="subDeptId">
|
||||
<el-input
|
||||
v-model="queryParams.subDeptId"
|
||||
placeholder="请输入总包单位"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="厂商编号参考字典attendance_vendors" prop="vendorsCode">
|
||||
<el-input
|
||||
v-model="queryParams.vendorsCode"
|
||||
placeholder="请输入厂商编号参考字典attendance_vendors"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="1-启用,0-停用" prop="enabled">
|
||||
<el-input
|
||||
v-model="queryParams.enabled"
|
||||
placeholder="请输入1-启用,0-停用"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="state">
|
||||
<el-input
|
||||
v-model="queryParams.state"
|
||||
placeholder="请输入状态"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="${comment}" prop="isDel">
|
||||
<el-input
|
||||
v-model="queryParams.isDel"
|
||||
placeholder="请输入${comment}"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-select v-model="queryParams.subDeptId" placeholder="请选择总包单位" clearable>
|
||||
<el-option v-for="(item, index) in depts" :key="index" :label="item.deptName" :value="item.deptId">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
|
@ -57,116 +21,83 @@
|
|||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['project:attendanceConfig:add']"
|
||||
>新增</el-button>
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
|
||||
v-hasPermi="['project:attendanceConfig:add']">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
:disabled="single"
|
||||
@click="handleUpdate"
|
||||
v-hasPermi="['project:attendanceConfig:edit']"
|
||||
>修改</el-button>
|
||||
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
|
||||
v-hasPermi="['project:attendanceConfig:edit']">修改</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
plain
|
||||
icon="el-icon-delete"
|
||||
size="mini"
|
||||
:disabled="multiple"
|
||||
@click="handleDelete"
|
||||
v-hasPermi="['project:attendanceConfig:remove']"
|
||||
>删除</el-button>
|
||||
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
|
||||
v-hasPermi="['project:attendanceConfig:remove']">删除</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="warning"
|
||||
plain
|
||||
icon="el-icon-download"
|
||||
size="mini"
|
||||
@click="handleExport"
|
||||
v-hasPermi="['project:attendanceConfig:export']"
|
||||
>导出</el-button>
|
||||
<el-col :span="1.5" v-if="1 == 2">
|
||||
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
|
||||
v-hasPermi="['project:attendanceConfig:export']">导出</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="attendanceConfigList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="${comment}" align="center" prop="id" />
|
||||
<el-table-column label="项目编号" align="center" prop="projectId" />
|
||||
<el-table-column label="总包单位" align="center" prop="subDeptId" />
|
||||
<el-table-column label="厂商编号参考字典attendance_vendors" align="center" prop="vendorsCode" />
|
||||
<el-table-column label="厂商参数" align="center" prop="vendorsParameter" />
|
||||
<el-table-column label="1-启用,0-停用" align="center" prop="enabled" />
|
||||
<el-table-column label="状态" align="center" prop="state" />
|
||||
<el-table-column label="备注" align="center" prop="remark" />
|
||||
<el-table-column label="${comment}" align="center" prop="isDel" />
|
||||
<el-table-column label="对接厂商" align="center" prop="vendorName" />
|
||||
<el-table-column label="项目名称" align="center" prop="projectName" />
|
||||
<el-table-column label="总包单位" align="center" prop="unitName" />
|
||||
<el-table-column label="是否启用" align="center" prop="enabled">
|
||||
<template slot-scope="{row}">
|
||||
<el-switch v-model="row.enabled" :active-value="1" @change="doUpdateRow(row)" :inactive-value="0"></el-switch>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['project:attendanceConfig:edit']"
|
||||
>修改</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['project:attendanceConfig:remove']"
|
||||
>删除</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['project:attendanceConfig:edit']">修改</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
|
||||
v-hasPermi="['project:attendanceConfig:remove']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
|
||||
@pagination="getList" />
|
||||
|
||||
<!-- 添加或修改项目考勤配置对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="项目编号" prop="projectId">
|
||||
<el-input v-model="form.projectId" placeholder="请输入项目编号" />
|
||||
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
|
||||
<el-form-item label="项目名称" prop="projectId">
|
||||
<el-select v-if="mode == 'add'" v-model="form.projectId" placeholder="请选择项目" clearable @change="doQueryFormSub">
|
||||
<el-option v-for="(item, index) in projectOptions" :key="index" :label="item.projectName" :value="item.id">
|
||||
</el-option>
|
||||
</el-select>
|
||||
<span v-else>{{ form.projectName }}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="总包单位" prop="subDeptId">
|
||||
<el-input v-model="form.subDeptId" placeholder="请输入总包单位" />
|
||||
</el-form-item>
|
||||
<el-form-item label="厂商编号参考字典attendance_vendors" prop="vendorsCode">
|
||||
<el-input v-model="form.vendorsCode" placeholder="请输入厂商编号参考字典attendance_vendors" />
|
||||
</el-form-item>
|
||||
<el-form-item label="厂商参数" prop="vendorsParameter">
|
||||
<el-input v-model="form.vendorsParameter" type="textarea" placeholder="请输入内容" />
|
||||
</el-form-item>
|
||||
<el-form-item label="1-启用,0-停用" prop="enabled">
|
||||
<el-input v-model="form.enabled" placeholder="请输入1-启用,0-停用" />
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="state">
|
||||
<el-input v-model="form.state" placeholder="请输入状态" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="form.remark" placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
<el-form-item label="${comment}" prop="isDel">
|
||||
<el-input v-model="form.isDel" placeholder="请输入${comment}" />
|
||||
<el-select v-if="mode == 'add'" v-model="form.subDeptId" placeholder="请选择总包单位" clearable>
|
||||
<el-option v-for="(item, index) in formDepts" :key="index" :label="item.deptName" :value="item.deptId">
|
||||
</el-option>
|
||||
</el-select>
|
||||
<span v-else>{{ form.unitName }}</span>
|
||||
</el-form-item>
|
||||
<el-tabs v-model="actTab">
|
||||
<el-tab-pane v-for="(it, idx) in dict.type.attendance_vendors" :key="idx" :label="it.label" :name="it.value">
|
||||
<el-form-item label="APPID" prop="appId">
|
||||
<el-input v-model="form.appId" placeholder="请输AppId" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="Secret" prop="secret">
|
||||
<el-input v-model="form.secret" placeholder="请输Secret" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="ProjectId" prop="appProjectId">
|
||||
<el-input v-model="form.appProjectId" placeholder="请输ProjectId" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="是否启用" prop="enabled">
|
||||
<el-radio-group v-model="form.enabled">
|
||||
<el-radio :label="1">启用</el-radio>
|
||||
<el-radio :label="0">停用</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||
|
@ -181,6 +112,7 @@ import { listAttendanceConfig, getAttendanceConfig, delAttendanceConfig, addAtte
|
|||
|
||||
export default {
|
||||
name: "AttendanceConfig",
|
||||
dicts: ['attendance_vendors'],
|
||||
data() {
|
||||
return {
|
||||
// 遮罩层
|
||||
|
@ -214,16 +146,94 @@ export default {
|
|||
isDel: null,
|
||||
},
|
||||
// 表单参数
|
||||
form: {},
|
||||
form: {
|
||||
projectId: '',
|
||||
subDeptId: '',
|
||||
appId: '',
|
||||
secret: '',
|
||||
appProjectId: '',
|
||||
enabled: 0
|
||||
},
|
||||
// 表单校验
|
||||
rules: {
|
||||
}
|
||||
|
||||
},
|
||||
projectOptions: [],
|
||||
depts: [],
|
||||
formDepts: [],
|
||||
actTab: '',
|
||||
mode: '',
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
doQueryFormSub() {
|
||||
let prjId = this.form.projectId;
|
||||
let tmps = this.prjDept2 && this.prjDept2[prjId] ? this.prjDept2[prjId] || [] : [];
|
||||
if (tmps.length > 0) {
|
||||
this.formDepts = tmps;
|
||||
if (tmps.length == 1) {
|
||||
this.form.subDeptId = tmps[0].deptId;
|
||||
} else {
|
||||
this.form.subDeptId = '';
|
||||
}
|
||||
return;
|
||||
}
|
||||
this.$api.publics.queryUnitList({
|
||||
projectId: prjId,
|
||||
unitTypes: "2".split(","),
|
||||
}).then((d) => {
|
||||
let objs = d.rows || [];
|
||||
if (!this.prjDept2) {
|
||||
this.prjDept2 = {};
|
||||
}
|
||||
this.prjDept2[this.queryParams.projectId] = objs;
|
||||
this.formDepts = objs;
|
||||
if (objs.length == 1) {
|
||||
this.form.subDeptId = objs[0].deptId;
|
||||
} else {
|
||||
this.form.subDeptId = '';
|
||||
}
|
||||
});
|
||||
},
|
||||
doQuerySub() {
|
||||
let tmps = this.prjDept2 && this.prjDept2[this.queryParams.projectId] ? this.prjDept2[this.queryParams.projectId] || [] : [];
|
||||
if (tmps.length > 0) {
|
||||
this.depts = tmps;
|
||||
if (tmps.length == 1) {
|
||||
this.queryParams.subDeptId = tmps[0].deptId;
|
||||
} else {
|
||||
this.queryParams.subDeptId = '';
|
||||
}
|
||||
return;
|
||||
}
|
||||
this.$api.publics.queryUnitList({
|
||||
projectId: this.queryParams.projectId,
|
||||
unitTypes: "2".split(","),
|
||||
}).then((d) => {
|
||||
let objs = d.rows || [];
|
||||
if (!this.prjDept2) {
|
||||
this.prjDept2 = {};
|
||||
}
|
||||
this.prjDept2[this.queryParams.projectId] = objs;
|
||||
this.depts = objs;
|
||||
if (objs.length == 1) {
|
||||
this.queryParams.subDeptId = objs[0].deptId;
|
||||
} else {
|
||||
this.queryParams.subDeptId = '';
|
||||
}
|
||||
});
|
||||
},
|
||||
init() {
|
||||
if (this.projectOptions && this.projectOptions.length > 0) {
|
||||
return;
|
||||
}
|
||||
this.$api.publics.getMyProjectList({}).then((response) => {
|
||||
this.projectOptions = response.rows;
|
||||
});
|
||||
},
|
||||
/** 查询项目考勤配置列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
|
@ -270,37 +280,87 @@ export default {
|
|||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.id)
|
||||
this.single = selection.length!==1
|
||||
this.single = selection.length !== 1
|
||||
this.multiple = !selection.length
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd() {
|
||||
this.reset();
|
||||
this.open = true;
|
||||
this.title = "添加项目考勤配置";
|
||||
this.mode = "add";
|
||||
this.title = "添加劳务实名制配置";
|
||||
this.rules = {
|
||||
projectId: [{ required: true, trigger: "blur", message: "请选择" }],
|
||||
subDeptId: [{ required: true, trigger: "blur", message: "请选择" }],
|
||||
appId: [{ required: true, trigger: "blur", message: "请输入" }],
|
||||
secret: [{ required: true, trigger: "blur", message: "请输入" }],
|
||||
appProjectId: [{ required: true, trigger: "blur", message: "请输入" }],
|
||||
enabled: [{ required: true, trigger: "blur", message: "请选择" }]
|
||||
}
|
||||
this.actTab = this.dict.type.attendance_vendors[0].value;
|
||||
setTimeout(()=>{
|
||||
this.$refs["form"].clearValidate();
|
||||
},0);
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.reset();
|
||||
const id = row.id || this.ids
|
||||
getAttendanceConfig(id).then(response => {
|
||||
this.form = response.data;
|
||||
this.mode = "edit"
|
||||
let obj = response.data;
|
||||
let p = obj.vendorsParameter ? this.$tryToJson(obj.vendorsParameter, {}) : {};
|
||||
obj.appId = p.appId || '';
|
||||
obj.secret = p.secret || '',
|
||||
obj.appProjectId = p.projectId || '';
|
||||
this.form = obj;
|
||||
this.open = true;
|
||||
this.title = "修改项目考勤配置";
|
||||
this.title = "修改劳务实名制配置";
|
||||
this.actTab = this.dict.type.attendance_vendors[0].value;
|
||||
this.rules = {
|
||||
appId: [{ required: true, trigger: "blur", message: "请输入" }],
|
||||
secret: [{ required: true, trigger: "blur", message: "请输入" }],
|
||||
appProjectId: [{ required: true, trigger: "blur", message: "请输入" }],
|
||||
enabled: [{ required: true, trigger: "blur", message: "请选择" }]
|
||||
}
|
||||
setTimeout(()=>{
|
||||
this.$refs["form"].clearValidate();
|
||||
},400);
|
||||
});
|
||||
},
|
||||
doUpdateRow(row){
|
||||
updateAttendanceConfig(row).then(response => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.getList();
|
||||
});
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs["form"].validate(valid => {
|
||||
if (valid) {
|
||||
let params = {
|
||||
appId: this.form.appId,
|
||||
secret: this.form.secret,
|
||||
projectId: this.form.appProjectId
|
||||
};
|
||||
let obj = {
|
||||
projectId: this.form.projectId,
|
||||
subDeptId: this.form.subDeptId,
|
||||
vendorsCode: this.actTab,
|
||||
vendorsParameter: JSON.stringify(params),
|
||||
enabled: this.form.enabled,
|
||||
state: 0,
|
||||
isDel: 0
|
||||
};
|
||||
if (this.form.id != null) {
|
||||
updateAttendanceConfig(this.form).then(response => {
|
||||
obj.id = this.form.id;
|
||||
updateAttendanceConfig(obj).then(response => {
|
||||
this.$modal.msgSuccess("修改成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
});
|
||||
} else {
|
||||
addAttendanceConfig(this.form).then(response => {
|
||||
addAttendanceConfig(obj).then(response => {
|
||||
this.$modal.msgSuccess("新增成功");
|
||||
this.open = false;
|
||||
this.getList();
|
||||
|
@ -312,12 +372,12 @@ export default {
|
|||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids;
|
||||
this.$modal.confirm('是否确认删除项目考勤配置编号为"' + ids + '"的数据项?').then(function() {
|
||||
this.$modal.confirm('是否确认删除项目考勤配置编号为"' + ids + '"的数据项?').then(function () {
|
||||
return delAttendanceConfig(ids);
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {});
|
||||
}).catch(() => { });
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
|
|
|
@ -1,229 +1,101 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="配置项ID,可以获取项目ID和总包ID" prop="cfgid">
|
||||
<el-input v-model="queryParams.cfgid" placeholder="请输入配置项ID,可以获取项目ID和总包ID" clearable
|
||||
@keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="厂商编号参考字典attendance_vendors" prop="vendorsCode">
|
||||
<el-input v-model="queryParams.vendorsCode" placeholder="请输入厂商编号参考字典attendance_vendors" clearable
|
||||
@keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="工人id" prop="workerId">
|
||||
<el-input
|
||||
v-model="queryParams.workerId"
|
||||
placeholder="请输入工人id"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.workerId" placeholder="请输入工人id" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目工人履历id对于旧劳务,这个字段相当于工人的projectWorkerId,管理人员的registerManagerId" prop="laborWorkerId">
|
||||
<el-input
|
||||
v-model="queryParams.laborWorkerId"
|
||||
placeholder="请输入项目工人履历id对于旧劳务,这个字段相当于工人的projectWorkerId,管理人员的registerManagerId"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.laborWorkerId"
|
||||
placeholder="请输入项目工人履历id对于旧劳务,这个字段相当于工人的projectWorkerId,管理人员的registerManagerId" clearable
|
||||
@keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="人员类别0:工人,1:管理人员" prop="workerCategory">
|
||||
<el-input
|
||||
v-model="queryParams.workerCategory"
|
||||
placeholder="请输入人员类别0:工人,1:管理人员"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.workerCategory" placeholder="请输入人员类别0:工人,1:管理人员" clearable
|
||||
@keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="工号" prop="qrCode">
|
||||
<el-input
|
||||
v-model="queryParams.qrCode"
|
||||
placeholder="请输入工号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.qrCode" placeholder="请输入工号" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="姓名" prop="name">
|
||||
<el-input
|
||||
v-model="queryParams.name"
|
||||
placeholder="请输入姓名"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.name" placeholder="请输入姓名" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="民族" prop="ethnic">
|
||||
<el-input
|
||||
v-model="queryParams.ethnic"
|
||||
placeholder="请输入民族"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.ethnic" placeholder="请输入民族" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="籍贯" prop="nativePlace">
|
||||
<el-input
|
||||
v-model="queryParams.nativePlace"
|
||||
placeholder="请输入籍贯"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.nativePlace" placeholder="请输入籍贯" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="性别0:男 1:女" prop="gender">
|
||||
<el-input
|
||||
v-model="queryParams.gender"
|
||||
placeholder="请输入性别0:男 1:女"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.gender" placeholder="请输入性别0:男 1:女" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="出生日期时间戳" prop="birthDate">
|
||||
<el-input
|
||||
v-model="queryParams.birthDate"
|
||||
placeholder="请输入出生日期时间戳"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.birthDate" placeholder="请输入出生日期时间戳" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="联系电话" prop="phone">
|
||||
<el-input
|
||||
v-model="queryParams.phone"
|
||||
placeholder="请输入联系电话"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.phone" placeholder="请输入联系电话" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="学历" prop="degreeName">
|
||||
<el-input
|
||||
v-model="queryParams.degreeName"
|
||||
placeholder="请输入学历"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.degreeName" placeholder="请输入学历" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="身份证照" prop="photo">
|
||||
<el-input
|
||||
v-model="queryParams.photo"
|
||||
placeholder="请输入身份证照"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.photo" placeholder="请输入身份证照" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="近照" prop="recentPhoto">
|
||||
<el-input
|
||||
v-model="queryParams.recentPhoto"
|
||||
placeholder="请输入近照"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.recentPhoto" placeholder="请输入近照" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="所属班组ID" prop="groupId">
|
||||
<el-input
|
||||
v-model="queryParams.groupId"
|
||||
placeholder="请输入所属班组ID"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.groupId" placeholder="请输入所属班组ID" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="所属班组" prop="groupName">
|
||||
<el-input
|
||||
v-model="queryParams.groupName"
|
||||
placeholder="请输入所属班组"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.groupName" placeholder="请输入所属班组" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="是否班组长" prop="leader">
|
||||
<el-input
|
||||
v-model="queryParams.leader"
|
||||
placeholder="请输入是否班组长"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.leader" placeholder="请输入是否班组长" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="工种编码" prop="workTypeCode">
|
||||
<el-input
|
||||
v-model="queryParams.workTypeCode"
|
||||
placeholder="请输入工种编码"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.workTypeCode" placeholder="请输入工种编码" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="工种" prop="workTypeName">
|
||||
<el-input
|
||||
v-model="queryParams.workTypeName"
|
||||
placeholder="请输入工种"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.workTypeName" placeholder="请输入工种" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="安全帽编号" prop="hatCode">
|
||||
<el-input
|
||||
v-model="queryParams.hatCode"
|
||||
placeholder="请输入安全帽编号"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.hatCode" placeholder="请输入安全帽编号" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="进退场状态0:进场,1:退场" prop="state">
|
||||
<el-input
|
||||
v-model="queryParams.state"
|
||||
placeholder="请输入进退场状态0:进场,1:退场"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.state" placeholder="请输入进退场状态0:进场,1:退场" clearable
|
||||
@keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="进场日期" prop="enterDate">
|
||||
<el-input
|
||||
v-model="queryParams.enterDate"
|
||||
placeholder="请输入进场日期"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.enterDate" placeholder="请输入进场日期" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="退场日期" prop="exitDate">
|
||||
<el-input
|
||||
v-model="queryParams.exitDate"
|
||||
placeholder="请输入退场日期"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.exitDate" placeholder="请输入退场日期" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="分包商id" prop="companyId">
|
||||
<el-input
|
||||
v-model="queryParams.companyId"
|
||||
placeholder="请输入分包商id"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.companyId" placeholder="请输入分包商id" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="分包商名称" prop="companyName">
|
||||
<el-input
|
||||
v-model="queryParams.companyName"
|
||||
placeholder="请输入分包商名称"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.companyName" placeholder="请输入分包商名称" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="平台对应分包商ID" prop="vendorId">
|
||||
<el-input
|
||||
v-model="queryParams.vendorId"
|
||||
placeholder="请输入平台对应分包商ID"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.vendorId" placeholder="请输入平台对应分包商ID" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="队伍id" prop="teamId">
|
||||
<el-input
|
||||
v-model="queryParams.teamId"
|
||||
placeholder="请输入队伍id"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.teamId" placeholder="请输入队伍id" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="队伍名称" prop="teamName">
|
||||
<el-input
|
||||
v-model="queryParams.teamName"
|
||||
placeholder="请输入队伍名称"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-input v-model="queryParams.teamName" placeholder="请输入队伍名称" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="${comment}" prop="isDel">
|
||||
<el-input
|
||||
v-model="queryParams.isDel"
|
||||
placeholder="请输入${comment}"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
<el-form-item label="" prop="isDel">
|
||||
<el-input v-model="queryParams.isDel" placeholder="请输入" clearable @keyup.enter.native="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||
|
@ -233,55 +105,32 @@
|
|||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['project:attendanceWorker:add']"
|
||||
>新增</el-button>
|
||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
|
||||
v-hasPermi="['project:attendanceWorker:add']">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
:disabled="single"
|
||||
@click="handleUpdate"
|
||||
v-hasPermi="['project:attendanceWorker:edit']"
|
||||
>修改</el-button>
|
||||
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
|
||||
v-hasPermi="['project:attendanceWorker:edit']">修改</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
plain
|
||||
icon="el-icon-delete"
|
||||
size="mini"
|
||||
:disabled="multiple"
|
||||
@click="handleDelete"
|
||||
v-hasPermi="['project:attendanceWorker:remove']"
|
||||
>删除</el-button>
|
||||
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
|
||||
v-hasPermi="['project:attendanceWorker:remove']">删除</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="warning"
|
||||
plain
|
||||
icon="el-icon-download"
|
||||
size="mini"
|
||||
@click="handleExport"
|
||||
v-hasPermi="['project:attendanceWorker:export']"
|
||||
>导出</el-button>
|
||||
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
|
||||
v-hasPermi="['project:attendanceWorker:export']">导出</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table v-loading="loading" :data="attendanceWorkerList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="${comment}" align="center" prop="id" />
|
||||
<el-table-column label="" align="center" prop="id" />
|
||||
<el-table-column label="配置项ID,可以获取项目ID和总包ID" align="center" prop="cfgid" />
|
||||
<el-table-column label="厂商编号参考字典attendance_vendors" align="center" prop="vendorsCode" />
|
||||
<el-table-column label="工人id" align="center" prop="workerId" />
|
||||
<el-table-column label="项目工人履历id对于旧劳务,这个字段相当于工人的projectWorkerId,管理人员的registerManagerId" align="center" prop="laborWorkerId" />
|
||||
<el-table-column label="项目工人履历id对于旧劳务,这个字段相当于工人的projectWorkerId,管理人员的registerManagerId" align="center"
|
||||
prop="laborWorkerId" />
|
||||
<el-table-column label="人员类别0:工人,1:管理人员" align="center" prop="workerCategory" />
|
||||
<el-table-column label="工号" align="center" prop="qrCode" />
|
||||
<el-table-column label="姓名" align="center" prop="name" />
|
||||
|
@ -311,43 +160,35 @@
|
|||
<el-table-column label="进场方式0:自动,1:手动2:拍照" align="center" prop="enterType" />
|
||||
<el-table-column label="服务返回的JSON" align="center" prop="other" />
|
||||
<el-table-column label="备注" align="center" prop="remark" />
|
||||
<el-table-column label="${comment}" align="center" prop="isDel" />
|
||||
<el-table-column label="" align="center" prop="isDel" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['project:attendanceWorker:edit']"
|
||||
>修改</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-delete"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['project:attendanceWorker:remove']"
|
||||
>删除</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['project:attendanceWorker:edit']">修改</el-button>
|
||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
|
||||
v-hasPermi="['project:attendanceWorker:remove']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total>0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
|
||||
@pagination="getList" />
|
||||
|
||||
<!-- 添加或修改考勤人员基本属性对话框 -->
|
||||
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
|
||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="配置项ID,可以获取项目ID和总包ID" prop="cfgid">
|
||||
<el-input v-model="form.cfgid" placeholder="请输入配置项ID,可以获取项目ID和总包ID" />
|
||||
</el-form-item>
|
||||
<el-form-item label="厂商编号参考字典attendance_vendors" prop="vendorsCode">
|
||||
<el-input v-model="form.vendorsCode" placeholder="请输入厂商编号参考字典attendance_vendors" />
|
||||
</el-form-item>
|
||||
<el-form-item label="工人id" prop="workerId">
|
||||
<el-input v-model="form.workerId" placeholder="请输入工人id" />
|
||||
</el-form-item>
|
||||
<el-form-item label="项目工人履历id对于旧劳务,这个字段相当于工人的projectWorkerId,管理人员的registerManagerId" prop="laborWorkerId">
|
||||
<el-input v-model="form.laborWorkerId" placeholder="请输入项目工人履历id对于旧劳务,这个字段相当于工人的projectWorkerId,管理人员的registerManagerId" />
|
||||
<el-input v-model="form.laborWorkerId"
|
||||
placeholder="请输入项目工人履历id对于旧劳务,这个字段相当于工人的projectWorkerId,管理人员的registerManagerId" />
|
||||
</el-form-item>
|
||||
<el-form-item label="人员类别0:工人,1:管理人员" prop="workerCategory">
|
||||
<el-input v-model="form.workerCategory" placeholder="请输入人员类别0:工人,1:管理人员" />
|
||||
|
@ -430,8 +271,8 @@
|
|||
<el-form-item label="备注" prop="remark">
|
||||
<el-input v-model="form.remark" placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
<el-form-item label="${comment}" prop="isDel">
|
||||
<el-input v-model="form.isDel" placeholder="请输入${comment}" />
|
||||
<el-form-item label="" prop="isDel">
|
||||
<el-input v-model="form.isDel" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
|
@ -443,7 +284,7 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import { listAttendanceWorker, getAttendanceWorker, delAttendanceWorker, addAttendanceWorker, updateAttendanceWorker } from "@/api/project/attendanceWorker";
|
||||
import { listAttendanceWorker, getAttendanceWorker, delAttendanceWorker, addAttendanceWorker, updateAttendanceWorker,queryAttendanceData } from "@/api/project/attendanceWorker";
|
||||
|
||||
export default {
|
||||
name: "AttendanceWorker",
|
||||
|
@ -471,6 +312,8 @@ export default {
|
|||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
cfgid: null,
|
||||
vendorsCode: null,
|
||||
workerId: null,
|
||||
laborWorkerId: null,
|
||||
workerCategory: null,
|
||||
|
@ -518,6 +361,10 @@ export default {
|
|||
},
|
||||
created() {
|
||||
this.getList();
|
||||
debugger
|
||||
queryAttendanceData('2023-09-25').then(d=>{
|
||||
debugger
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
/** 查询考勤人员基本属性列表 */
|
||||
|
@ -538,6 +385,8 @@ export default {
|
|||
reset() {
|
||||
this.form = {
|
||||
id: null,
|
||||
cfgid: null,
|
||||
vendorsCode: null,
|
||||
workerId: null,
|
||||
laborWorkerId: null,
|
||||
workerCategory: null,
|
||||
|
@ -590,7 +439,7 @@ export default {
|
|||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.ids = selection.map(item => item.id)
|
||||
this.single = selection.length!==1
|
||||
this.single = selection.length !== 1
|
||||
this.multiple = !selection.length
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
|
@ -632,12 +481,12 @@ export default {
|
|||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids;
|
||||
this.$modal.confirm('是否确认删除考勤人员基本属性编号为"' + ids + '"的数据项?').then(function() {
|
||||
this.$modal.confirm('是否确认删除考勤人员基本属性编号为"' + ids + '"的数据项?').then(function () {
|
||||
return delAttendanceWorker(ids);
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {});
|
||||
}).catch(() => { });
|
||||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
|
|
|
@ -76,6 +76,7 @@ export default {
|
|||
data() {
|
||||
return {
|
||||
elKey: 0,
|
||||
title:'',
|
||||
isOpen: false,
|
||||
prj: null,
|
||||
// 选中数组
|
||||
|
|
|
@ -77,6 +77,15 @@ public class SurProjectAttendanceCfgController extends BaseController
|
|||
@PostMapping
|
||||
public AjaxResult add(@RequestBody SurProjectAttendanceCfg surProjectAttendanceCfg)
|
||||
{
|
||||
SurProjectAttendanceCfg where=new SurProjectAttendanceCfg();
|
||||
where.setProjectId(surProjectAttendanceCfg.getProjectId());
|
||||
where.setSubDeptId(surProjectAttendanceCfg.getSubDeptId());
|
||||
where.setVendorsCode(surProjectAttendanceCfg.getVendorsCode());
|
||||
List<SurProjectAttendanceCfg> list=surProjectAttendanceCfgService.selectSurProjectAttendanceCfgList(where);
|
||||
if(list.size()>0){
|
||||
SurProjectAttendanceCfg it=list.get(0);
|
||||
return AjaxResult.error("项目【"+it.getProjectName()+"】总包单位【"+it.getUnitName()+"】已添加过此厂商【"+it.getVendorName()+"】的配置了!");
|
||||
}
|
||||
return toAjax(surProjectAttendanceCfgService.insertSurProjectAttendanceCfg(surProjectAttendanceCfg));
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,8 @@ package com.yanzhu.jh.project.controller;
|
|||
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.yanzhu.jh.project.domain.SurProjectAttendanceCfg;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
@ -101,4 +103,11 @@ public class SurProjectAttendanceUserController extends BaseController
|
|||
{
|
||||
return toAjax(surProjectAttendanceUserService.deleteSurProjectAttendanceUserByIds(ids));
|
||||
}
|
||||
|
||||
@PostMapping("/queryAttendanceData")
|
||||
public TableDataInfo queryAttendanceData(@RequestBody SurProjectAttendanceCfg where){
|
||||
startPage();
|
||||
List<SurProjectAttendanceUser> list =surProjectAttendanceUserService.queryAttendanceData(where);
|
||||
return getDataTable(list);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,6 +42,36 @@ public class SurProjectAttendanceCfg extends BaseEntity
|
|||
@Excel(name = "状态")
|
||||
private Long state;
|
||||
|
||||
|
||||
private String projectName;
|
||||
private String unitName;
|
||||
|
||||
private String vendorName;
|
||||
|
||||
public String getVendorName() {
|
||||
return vendorName;
|
||||
}
|
||||
|
||||
public void setVendorName(String vendorName) {
|
||||
this.vendorName = vendorName;
|
||||
}
|
||||
|
||||
public String getProjectName() {
|
||||
return projectName;
|
||||
}
|
||||
|
||||
public void setProjectName(String projectName) {
|
||||
this.projectName = projectName;
|
||||
}
|
||||
|
||||
public String getUnitName() {
|
||||
return unitName;
|
||||
}
|
||||
|
||||
public void setUnitName(String unitName) {
|
||||
this.unitName = unitName;
|
||||
}
|
||||
|
||||
/** $column.columnComment */
|
||||
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
|
||||
private Long isDel;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.yanzhu.jh.project.domain;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
|
@ -15,13 +16,21 @@ public class SurProjectAttendanceData extends BaseEntity
|
|||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** $column.columnComment */
|
||||
/** */
|
||||
private Long id;
|
||||
|
||||
/** 配置项ID,可以获取项目ID和总包ID */
|
||||
@Excel(name = "配置项ID,可以获取项目ID和总包ID")
|
||||
private Long cfgid;
|
||||
|
||||
/** 厂商编号参考字典attendance_vendors */
|
||||
@Excel(name = "厂商编号参考字典attendance_vendors")
|
||||
private String vendorsCode;
|
||||
|
||||
/** 服务端ID */
|
||||
@Excel(name = "服务端ID")
|
||||
private Long serverid;
|
||||
|
||||
/** 工人Id */
|
||||
@Excel(name = "工人Id")
|
||||
private Long workerId;
|
||||
|
@ -34,6 +43,30 @@ public class SurProjectAttendanceData extends BaseEntity
|
|||
@Excel(name = "考勤时间yyyy-MM-dd HH:mm:ss")
|
||||
private String attendanceTime;
|
||||
|
||||
/** 身份证号 */
|
||||
@Excel(name = "身份证号")
|
||||
private String identification;
|
||||
|
||||
/** 队伍id */
|
||||
@Excel(name = "队伍id")
|
||||
private Long teamId;
|
||||
|
||||
/** 工种编码 */
|
||||
@Excel(name = "工种编码")
|
||||
private String workTypeCode;
|
||||
|
||||
/** 分包商id */
|
||||
@Excel(name = "分包商id")
|
||||
private Long companyId;
|
||||
|
||||
/** 平台对应分包商ID */
|
||||
@Excel(name = "平台对应分包商ID")
|
||||
private Long vendorId;
|
||||
|
||||
/** 新旧系统项目标识0:新系统项目; 1:旧系统项目 */
|
||||
@Excel(name = "新旧系统项目标识0:新系统项目; 1:旧系统项目")
|
||||
private Long projectType;
|
||||
|
||||
/** 设备编号 */
|
||||
@Excel(name = "设备编号")
|
||||
private String deviceCode;
|
||||
|
@ -42,18 +75,43 @@ public class SurProjectAttendanceData extends BaseEntity
|
|||
@Excel(name = "作业面Id")
|
||||
private String workPointId;
|
||||
|
||||
/** 照片 */
|
||||
@Excel(name = "照片")
|
||||
private String scanPhoto;
|
||||
|
||||
/** 服务返回的JSON */
|
||||
@Excel(name = "服务返回的JSON")
|
||||
private String other;
|
||||
|
||||
/** $column.columnComment */
|
||||
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
|
||||
/** */
|
||||
@Excel(name = "")
|
||||
private Long state;
|
||||
|
||||
/** $column.columnComment */
|
||||
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
|
||||
/** */
|
||||
@Excel(name = "")
|
||||
private Long isDel;
|
||||
|
||||
public static SurProjectAttendanceData create(JSONObject json) {
|
||||
SurProjectAttendanceData d=new SurProjectAttendanceData();
|
||||
d.attendanceTime=json.getString("time");
|
||||
d.attendanceType=json.getString("type");
|
||||
d.serverid=json.getLong("id");
|
||||
d.workerId=json.getLong("workerId");
|
||||
d.identification=json.getString("identification");
|
||||
d.teamId=json.getLong("teamId");
|
||||
d.workTypeCode=json.getString("workTypeCode");
|
||||
d.companyId=json.getLong("companyId");
|
||||
d.vendorId=json.getLong("vendorId");
|
||||
d.projectType=json.getLong("projectType");
|
||||
d.deviceCode=json.getString("deviceCode");
|
||||
d.workPointId=json.getString("workPointId");
|
||||
d.scanPhoto=json.getString("scanPhoto");
|
||||
//d.other=json.toJSONString();
|
||||
d.state=0l;
|
||||
d.isDel=0l;
|
||||
return d;
|
||||
}
|
||||
|
||||
public void setId(Long id)
|
||||
{
|
||||
this.id = id;
|
||||
|
@ -63,6 +121,15 @@ public class SurProjectAttendanceData extends BaseEntity
|
|||
{
|
||||
return id;
|
||||
}
|
||||
public void setCfgid(Long cfgid)
|
||||
{
|
||||
this.cfgid = cfgid;
|
||||
}
|
||||
|
||||
public Long getCfgid()
|
||||
{
|
||||
return cfgid;
|
||||
}
|
||||
public void setVendorsCode(String vendorsCode)
|
||||
{
|
||||
this.vendorsCode = vendorsCode;
|
||||
|
@ -72,6 +139,15 @@ public class SurProjectAttendanceData extends BaseEntity
|
|||
{
|
||||
return vendorsCode;
|
||||
}
|
||||
public void setServerid(Long serverid)
|
||||
{
|
||||
this.serverid = serverid;
|
||||
}
|
||||
|
||||
public Long getServerid()
|
||||
{
|
||||
return serverid;
|
||||
}
|
||||
public void setWorkerId(Long workerId)
|
||||
{
|
||||
this.workerId = workerId;
|
||||
|
@ -99,6 +175,60 @@ public class SurProjectAttendanceData extends BaseEntity
|
|||
{
|
||||
return attendanceTime;
|
||||
}
|
||||
public void setIdentification(String identification)
|
||||
{
|
||||
this.identification = identification;
|
||||
}
|
||||
|
||||
public String getIdentification()
|
||||
{
|
||||
return identification;
|
||||
}
|
||||
public void setTeamId(Long teamId)
|
||||
{
|
||||
this.teamId = teamId;
|
||||
}
|
||||
|
||||
public Long getTeamId()
|
||||
{
|
||||
return teamId;
|
||||
}
|
||||
public void setWorkTypeCode(String workTypeCode)
|
||||
{
|
||||
this.workTypeCode = workTypeCode;
|
||||
}
|
||||
|
||||
public String getWorkTypeCode()
|
||||
{
|
||||
return workTypeCode;
|
||||
}
|
||||
public void setCompanyId(Long companyId)
|
||||
{
|
||||
this.companyId = companyId;
|
||||
}
|
||||
|
||||
public Long getCompanyId()
|
||||
{
|
||||
return companyId;
|
||||
}
|
||||
public void setVendorId(Long vendorId)
|
||||
{
|
||||
this.vendorId = vendorId;
|
||||
}
|
||||
|
||||
public Long getVendorId()
|
||||
{
|
||||
return vendorId;
|
||||
}
|
||||
public void setProjectType(Long projectType)
|
||||
{
|
||||
this.projectType = projectType;
|
||||
}
|
||||
|
||||
public Long getProjectType()
|
||||
{
|
||||
return projectType;
|
||||
}
|
||||
public void setDeviceCode(String deviceCode)
|
||||
{
|
||||
this.deviceCode = deviceCode;
|
||||
|
@ -117,6 +247,15 @@ public class SurProjectAttendanceData extends BaseEntity
|
|||
{
|
||||
return workPointId;
|
||||
}
|
||||
public void setScanPhoto(String scanPhoto)
|
||||
{
|
||||
this.scanPhoto = scanPhoto;
|
||||
}
|
||||
|
||||
public String getScanPhoto()
|
||||
{
|
||||
return scanPhoto;
|
||||
}
|
||||
public void setOther(String other)
|
||||
{
|
||||
this.other = other;
|
||||
|
@ -149,12 +288,21 @@ public class SurProjectAttendanceData extends BaseEntity
|
|||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
.append("id", getId())
|
||||
.append("cfgid", getCfgid())
|
||||
.append("vendorsCode", getVendorsCode())
|
||||
.append("serverid", getServerid())
|
||||
.append("workerId", getWorkerId())
|
||||
.append("attendanceType", getAttendanceType())
|
||||
.append("attendanceTime", getAttendanceTime())
|
||||
.append("identification", getIdentification())
|
||||
.append("teamId", getTeamId())
|
||||
.append("workTypeCode", getWorkTypeCode())
|
||||
.append("companyId", getCompanyId())
|
||||
.append("vendorId", getVendorId())
|
||||
.append("projectType", getProjectType())
|
||||
.append("deviceCode", getDeviceCode())
|
||||
.append("workPointId", getWorkPointId())
|
||||
.append("scanPhoto", getScanPhoto())
|
||||
.append("other", getOther())
|
||||
.append("state", getState())
|
||||
.append("remark", getRemark())
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
package com.yanzhu.jh.project.domain;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||
import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 考勤人员基本属性对象 sur_project_attendance_user
|
||||
*
|
||||
|
@ -15,9 +18,17 @@ public class SurProjectAttendanceUser extends BaseEntity
|
|||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** $column.columnComment */
|
||||
/** */
|
||||
private Long id;
|
||||
|
||||
/** 配置项ID,可以获取项目ID和总包ID */
|
||||
@Excel(name = "配置项ID,可以获取项目ID和总包ID")
|
||||
private Long cfgid;
|
||||
|
||||
/** 厂商编号参考字典attendance_vendors */
|
||||
@Excel(name = "厂商编号参考字典attendance_vendors")
|
||||
private String vendorsCode;
|
||||
|
||||
/** 工人id */
|
||||
@Excel(name = "工人id")
|
||||
private Long workerId;
|
||||
|
@ -138,10 +149,62 @@ public class SurProjectAttendanceUser extends BaseEntity
|
|||
@Excel(name = "服务返回的JSON")
|
||||
private String other;
|
||||
|
||||
/** $column.columnComment */
|
||||
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
|
||||
/** */
|
||||
@Excel(name = "")
|
||||
private Long isDel;
|
||||
|
||||
private Date inTime;
|
||||
private Date outTime;
|
||||
|
||||
public Date getInTime() {
|
||||
return inTime;
|
||||
}
|
||||
|
||||
public void setInTime(Date inTime) {
|
||||
this.inTime = inTime;
|
||||
}
|
||||
|
||||
public Date getOutTime() {
|
||||
return outTime;
|
||||
}
|
||||
|
||||
public void setOutTime(Date outTime) {
|
||||
this.outTime = outTime;
|
||||
}
|
||||
|
||||
public static SurProjectAttendanceUser create(JSONObject json) {
|
||||
SurProjectAttendanceUser u=new SurProjectAttendanceUser();
|
||||
u.workerId=json.getLong("workerId");
|
||||
u.laborWorkerId=json.getLong("laborWorkerId");
|
||||
u.workerCategory=json.getLong("workerCategory");
|
||||
u.qrCode=json.getLong("qrCode");
|
||||
u.name=json.getString("name");
|
||||
u.ethnic=json.getString("ethnic");
|
||||
u.nativePlace=json.getString("nativePlace");
|
||||
u.gender=json.getLong("gender");
|
||||
u.birthDate=json.getLong("birthDate");
|
||||
u.phone=json.getString("phone");
|
||||
u.recentPhoto=json.getString("recentPhoto");
|
||||
u.groupId=json.getLong("groupId");
|
||||
u.groupName=json.getString("groupName");
|
||||
u.leader=json.getBoolean("leader")?1:0;
|
||||
u.workTypeCode=json.getString("workTypeCode");
|
||||
u.workTypeName=json.getString("workTypeName");
|
||||
u.specWorkType=json.getBoolean("specWorkType")?1:0;
|
||||
u.hatCode=json.getString("hatCode");
|
||||
u.state=json.getLong("state");
|
||||
u.enterDate=json.getString("enterDate");
|
||||
u.exitDate=json.getString("exitDate");
|
||||
u.companyId=json.getLong("companyId");
|
||||
u.companyName=json.getString("companyName");
|
||||
u.vendorId=json.getLong("vendorId");
|
||||
u.teamId=json.getInteger("teamId");
|
||||
u.teamName=json.getString("teamName");
|
||||
u.enterType=json.getString("enterType");
|
||||
u.other=json.toJSONString();
|
||||
u.isDel=0l;
|
||||
return u;
|
||||
}
|
||||
public void setId(Long id)
|
||||
{
|
||||
this.id = id;
|
||||
|
@ -151,6 +214,24 @@ public class SurProjectAttendanceUser extends BaseEntity
|
|||
{
|
||||
return id;
|
||||
}
|
||||
public void setCfgid(Long cfgid)
|
||||
{
|
||||
this.cfgid = cfgid;
|
||||
}
|
||||
|
||||
public Long getCfgid()
|
||||
{
|
||||
return cfgid;
|
||||
}
|
||||
public void setVendorsCode(String vendorsCode)
|
||||
{
|
||||
this.vendorsCode = vendorsCode;
|
||||
}
|
||||
|
||||
public String getVendorsCode()
|
||||
{
|
||||
return vendorsCode;
|
||||
}
|
||||
public void setWorkerId(Long workerId)
|
||||
{
|
||||
this.workerId = workerId;
|
||||
|
@ -435,6 +516,8 @@ public class SurProjectAttendanceUser extends BaseEntity
|
|||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
.append("id", getId())
|
||||
.append("cfgid", getCfgid())
|
||||
.append("vendorsCode", getVendorsCode())
|
||||
.append("workerId", getWorkerId())
|
||||
.append("laborWorkerId", getLaborWorkerId())
|
||||
.append("workerCategory", getWorkerCategory())
|
||||
|
|
|
@ -58,4 +58,6 @@ public interface SurProjectAttendanceDataMapper
|
|||
* @return 结果
|
||||
*/
|
||||
public int deleteSurProjectAttendanceDataByIds(Long[] ids);
|
||||
|
||||
public long getLastServerId(SurProjectAttendanceData where);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package com.yanzhu.jh.project.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.yanzhu.jh.project.domain.SurProjectAttendanceCfg;
|
||||
import com.yanzhu.jh.project.domain.SurProjectAttendanceUser;
|
||||
|
||||
/**
|
||||
|
@ -58,4 +60,6 @@ public interface SurProjectAttendanceUserMapper
|
|||
* @return 结果
|
||||
*/
|
||||
public int deleteSurProjectAttendanceUserByIds(Long[] ids);
|
||||
|
||||
public List<SurProjectAttendanceUser> queryAttendanceData(SurProjectAttendanceCfg where);
|
||||
}
|
||||
|
|
|
@ -58,4 +58,8 @@ public interface ISurProjectAttendanceDataService
|
|||
* @return 结果
|
||||
*/
|
||||
public int deleteSurProjectAttendanceDataById(Long id);
|
||||
|
||||
public void add(SurProjectAttendanceData sdata);
|
||||
|
||||
public long getLastServerId(SurProjectAttendanceData where);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package com.yanzhu.jh.project.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.yanzhu.jh.project.domain.SurProjectAttendanceCfg;
|
||||
import com.yanzhu.jh.project.domain.SurProjectAttendanceUser;
|
||||
|
||||
/**
|
||||
|
@ -58,4 +60,8 @@ public interface ISurProjectAttendanceUserService
|
|||
* @return 结果
|
||||
*/
|
||||
public int deleteSurProjectAttendanceUserById(Long id);
|
||||
|
||||
public void add(SurProjectAttendanceUser user);
|
||||
|
||||
public List<SurProjectAttendanceUser> queryAttendanceData(SurProjectAttendanceCfg where);
|
||||
}
|
||||
|
|
|
@ -53,7 +53,8 @@ public class SurProjectAttendanceDataServiceImpl implements ISurProjectAttendanc
|
|||
@Override
|
||||
public int insertSurProjectAttendanceData(SurProjectAttendanceData surProjectAttendanceData)
|
||||
{
|
||||
surProjectAttendanceData.setCreateBy(SecurityUtils.getUsername());
|
||||
|
||||
surProjectAttendanceData.setCreateBy("task");
|
||||
surProjectAttendanceData.setCreateTime(DateUtils.getNowDate());
|
||||
return surProjectAttendanceDataMapper.insertSurProjectAttendanceData(surProjectAttendanceData);
|
||||
}
|
||||
|
@ -67,7 +68,7 @@ public class SurProjectAttendanceDataServiceImpl implements ISurProjectAttendanc
|
|||
@Override
|
||||
public int updateSurProjectAttendanceData(SurProjectAttendanceData surProjectAttendanceData)
|
||||
{
|
||||
surProjectAttendanceData.setUpdateBy(SecurityUtils.getUsername());
|
||||
surProjectAttendanceData.setUpdateBy("task");
|
||||
surProjectAttendanceData.setUpdateTime(DateUtils.getNowDate());
|
||||
return surProjectAttendanceDataMapper.updateSurProjectAttendanceData(surProjectAttendanceData);
|
||||
}
|
||||
|
@ -95,4 +96,24 @@ public class SurProjectAttendanceDataServiceImpl implements ISurProjectAttendanc
|
|||
{
|
||||
return surProjectAttendanceDataMapper.deleteSurProjectAttendanceDataById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void add(SurProjectAttendanceData sdata) {
|
||||
SurProjectAttendanceData where=new SurProjectAttendanceData();
|
||||
where.setVendorsCode(sdata.getVendorsCode());
|
||||
where.setCfgid(sdata.getCfgid());
|
||||
where.setServerid(sdata.getServerid());
|
||||
List<SurProjectAttendanceData> list=selectSurProjectAttendanceDataList(where);
|
||||
if(list.size()==0){
|
||||
insertSurProjectAttendanceData(sdata);
|
||||
}else{
|
||||
sdata.setId(list.get(0).getId());
|
||||
updateSurProjectAttendanceData(sdata);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getLastServerId(SurProjectAttendanceData where) {
|
||||
return surProjectAttendanceDataMapper.getLastServerId(where);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.yanzhu.jh.project.service.impl;
|
|||
|
||||
import java.util.List;
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import com.yanzhu.jh.project.domain.SurProjectAttendanceCfg;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.yanzhu.jh.project.mapper.SurProjectAttendanceUserMapper;
|
||||
|
@ -53,7 +54,7 @@ public class SurProjectAttendanceUserServiceImpl implements ISurProjectAttendanc
|
|||
@Override
|
||||
public int insertSurProjectAttendanceUser(SurProjectAttendanceUser surProjectAttendanceUser)
|
||||
{
|
||||
surProjectAttendanceUser.setCreateBy(SecurityUtils.getUsername());
|
||||
surProjectAttendanceUser.setCreateBy("task");
|
||||
surProjectAttendanceUser.setCreateTime(DateUtils.getNowDate());
|
||||
return surProjectAttendanceUserMapper.insertSurProjectAttendanceUser(surProjectAttendanceUser);
|
||||
}
|
||||
|
@ -67,7 +68,8 @@ public class SurProjectAttendanceUserServiceImpl implements ISurProjectAttendanc
|
|||
@Override
|
||||
public int updateSurProjectAttendanceUser(SurProjectAttendanceUser surProjectAttendanceUser)
|
||||
{
|
||||
surProjectAttendanceUser.setUpdateBy(SecurityUtils.getUsername());
|
||||
|
||||
surProjectAttendanceUser.setUpdateBy("task");
|
||||
surProjectAttendanceUser.setUpdateTime(DateUtils.getNowDate());
|
||||
return surProjectAttendanceUserMapper.updateSurProjectAttendanceUser(surProjectAttendanceUser);
|
||||
}
|
||||
|
@ -95,4 +97,23 @@ public class SurProjectAttendanceUserServiceImpl implements ISurProjectAttendanc
|
|||
{
|
||||
return surProjectAttendanceUserMapper.deleteSurProjectAttendanceUserById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void add(SurProjectAttendanceUser user) {
|
||||
SurProjectAttendanceUser where=new SurProjectAttendanceUser();
|
||||
where.setWorkerId(user.getWorkerId());
|
||||
where.setCfgid(user.getCfgid());
|
||||
List<SurProjectAttendanceUser> list=selectSurProjectAttendanceUserList(where);
|
||||
if(list.size()==0){
|
||||
insertSurProjectAttendanceUser(user);
|
||||
}else{
|
||||
user.setId(list.get(0).getId());
|
||||
updateSurProjectAttendanceUser(user);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SurProjectAttendanceUser> queryAttendanceData(SurProjectAttendanceCfg where) {
|
||||
return surProjectAttendanceUserMapper.queryAttendanceData(where);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,12 +1,21 @@
|
|||
package com.yanzhu.jh.project.task;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.yanzhu.jh.project.domain.SurProjectAttendanceCfg;
|
||||
import com.yanzhu.jh.project.domain.SurProjectAttendanceData;
|
||||
import com.yanzhu.jh.project.domain.SurProjectAttendanceUser;
|
||||
import com.yanzhu.jh.project.service.ISurProjectAttendanceCfgService;
|
||||
import com.yanzhu.jh.project.service.ISurProjectAttendanceDataService;
|
||||
import com.yanzhu.jh.project.service.ISurProjectAttendanceUserService;
|
||||
import okhttp3.HttpUrl;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
import org.apache.commons.codec.digest.DigestUtils;
|
||||
import org.apache.logging.log4j.util.Strings;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.io.IOException;
|
||||
|
@ -15,21 +24,47 @@ import java.util.stream.Collectors;
|
|||
|
||||
@Component("attendanceTask")
|
||||
public class AttendanceTask {
|
||||
//private static final String APP_ID_PARAM_NAME="appid";
|
||||
//private static final String SIGN_PARAM_NAME="sign";
|
||||
//private static String appId = "8fba899a21c64be4aa25bf0f3314ad5c";
|
||||
//private static String appSecret = "426b3d8280620176d80a826eebef3579";
|
||||
|
||||
public static void syncWorker(String appid,String secret,String projectld,int page){
|
||||
@Autowired
|
||||
ISurProjectAttendanceUserService attendanceUserService;
|
||||
|
||||
@Autowired
|
||||
ISurProjectAttendanceCfgService attendanceCfgService;
|
||||
|
||||
@Autowired
|
||||
ISurProjectAttendanceDataService attendanceDataService;
|
||||
public void syncWorker(){
|
||||
SurProjectAttendanceCfg where =new SurProjectAttendanceCfg();
|
||||
where.setEnabled(1l);
|
||||
where.setIsDel(0l);
|
||||
where.setVendorsCode("gld");
|
||||
List<SurProjectAttendanceCfg> list=attendanceCfgService.selectSurProjectAttendanceCfgList(where);
|
||||
for(SurProjectAttendanceCfg it :list){
|
||||
String param= it.getVendorsParameter();
|
||||
if(Strings.isNotEmpty(param)){
|
||||
try{
|
||||
JSONObject jo=JSON.parseObject(param);
|
||||
String appId=jo.getString("appId");
|
||||
String secret=jo.getString("secret");
|
||||
String projectId=jo.getString("projectId");
|
||||
doSyncWorker(appId,secret,projectId,1,it);
|
||||
}catch (Exception ex){
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
private void doSyncWorker(String appid,String secret,String projectld,int page,SurProjectAttendanceCfg it){
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("projectId", projectld);
|
||||
params.put("start", "2000-01-01 00:00:00");
|
||||
params.put("end", "2099-01-01 00:00:00");
|
||||
params.put("pageNo",""+page);
|
||||
params.put("pageSize", "1000");
|
||||
params.put("appid","8fba899a21c64be4aa25bf0f3314ad5c");
|
||||
params.put("appid",appid);
|
||||
String sign = getSign(params,secret);
|
||||
String host="https://glm.glodon.com/api/open";
|
||||
params.put("sign",sign);
|
||||
String path="/worker/new/allWorkerInfo";
|
||||
HttpUrl.Builder urlBuilder = Objects.requireNonNull(HttpUrl.parse(host + path)).newBuilder();
|
||||
params.forEach((s, o) -> {
|
||||
|
@ -39,14 +74,87 @@ public class AttendanceTask {
|
|||
.url(urlBuilder.build())
|
||||
.build();
|
||||
String data=getResult(request);
|
||||
System.out.println("data:"+data);
|
||||
JSONObject jo= JSON.parseObject(data);
|
||||
JSONArray arr=jo.getJSONArray("data");
|
||||
if(arr!=null && arr.size()>0){
|
||||
for(int i=0;i<arr.size();i++){
|
||||
JSONObject json=arr.getJSONObject(i);
|
||||
SurProjectAttendanceUser user=SurProjectAttendanceUser.create(json);
|
||||
user.setVendorsCode(it.getVendorsCode());
|
||||
user.setCfgid(it.getId());
|
||||
attendanceUserService.add(user);
|
||||
}
|
||||
}
|
||||
if(arr.size()==1000){
|
||||
doSyncWorker(appid,secret,projectld,page+1,it);
|
||||
}
|
||||
}
|
||||
public static void main2(String[] args) {
|
||||
syncWorker("8fba899a21c64be4aa25bf0f3314ad5c","426b3d8280620176d80a826eebef3579","719148569880576",1);
|
||||
public static void main(String[] args) {
|
||||
//syncWorker("8fba899a21c64be4aa25bf0f3314ad5c","426b3d8280620176d80a826eebef3579","719148569880576",1);
|
||||
//doSyncAttendanceData("8fba899a21c64be4aa25bf0f3314ad5c","426b3d8280620176d80a826eebef3579","719148569880576",0,null);
|
||||
}
|
||||
|
||||
public static void main(String[] args){
|
||||
public void syncAttendanceData(){
|
||||
SurProjectAttendanceCfg where =new SurProjectAttendanceCfg();
|
||||
where.setEnabled(1l);
|
||||
where.setIsDel(0l);
|
||||
where.setVendorsCode("gld");
|
||||
List<SurProjectAttendanceCfg> list=attendanceCfgService.selectSurProjectAttendanceCfgList(where);
|
||||
for(SurProjectAttendanceCfg it :list){
|
||||
String param= it.getVendorsParameter();
|
||||
if(Strings.isNotEmpty(param)){
|
||||
try{
|
||||
JSONObject jo=JSON.parseObject(param);
|
||||
String appId=jo.getString("appId");
|
||||
String secret=jo.getString("secret");
|
||||
String projectId=jo.getString("projectId");
|
||||
SurProjectAttendanceData dwhere=new SurProjectAttendanceData();
|
||||
dwhere.setCfgid(it.getId());
|
||||
long startId=attendanceDataService.getLastServerId(dwhere);
|
||||
doSyncAttendanceData(appId,secret,projectId,startId,it);
|
||||
}catch (Exception ex){
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
private void doSyncAttendanceData(String appid,String secret,String projectld,long id,SurProjectAttendanceCfg it){
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("projectId", projectld);
|
||||
params.put("startId",""+id);
|
||||
params.put("pageSize", "500");
|
||||
params.put("appid",appid);
|
||||
String sign = getSign(params,secret);
|
||||
String host="https://glm.glodon.com/api/open";
|
||||
params.put("sign",sign);
|
||||
String path="/attendance/card";
|
||||
HttpUrl.Builder urlBuilder = Objects.requireNonNull(HttpUrl.parse(host + path)).newBuilder();
|
||||
params.forEach((s, o) -> {
|
||||
urlBuilder.addQueryParameter(s, (String) o);
|
||||
});
|
||||
Request request = new Request.Builder()
|
||||
.url(urlBuilder.build())
|
||||
.build();
|
||||
String data=getResult(request);
|
||||
JSONObject jo= JSON.parseObject(data);
|
||||
JSONArray arr=jo.getJSONArray("data");
|
||||
long lastId=0;
|
||||
if(arr!=null && arr.size()>0){
|
||||
for(int i=0;i<arr.size();i++){
|
||||
JSONObject json=arr.getJSONObject(i);
|
||||
SurProjectAttendanceData sdata=SurProjectAttendanceData.create(json);
|
||||
lastId=sdata.getServerid();
|
||||
sdata.setCfgid(it.getId());
|
||||
sdata.setVendorsCode(it.getVendorsCode());
|
||||
attendanceDataService.add(sdata);
|
||||
}
|
||||
}
|
||||
System.out.println("-------->"+id+","+lastId);
|
||||
if(arr.size()==500){
|
||||
doSyncAttendanceData(appid,secret,projectld,lastId,it);
|
||||
}
|
||||
}
|
||||
public static void main3(String[] args){
|
||||
System.out.println("-------1--------->AttendanceUserTask.syncWorker");
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("projectId", "719148569880576");
|
||||
|
@ -70,6 +178,7 @@ public class AttendanceTask {
|
|||
String data=getResult(request);
|
||||
System.out.println("data:"+data);
|
||||
JSONObject jo= JSON.parseObject(data);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -18,10 +18,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<result property="createTime" column="create_time" />
|
||||
<result property="updateBy" column="update_by" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
<result property="projectName" column="projectName"/>
|
||||
<result property="unitName" column="unitName"/>
|
||||
<result property="vendorName" column="vendorName"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectSurProjectAttendanceCfgVo">
|
||||
select id, project_id, sub_dept_id, vendors_code, vendors_parameter, enabled, state, remark, is_del, create_by, create_time, update_by, update_time from sur_project_attendance_cfg
|
||||
select *
|
||||
from (
|
||||
SELECT a.*,sp.projectName,pu.unitName,sdd1.dict_label vendorName FROM sur_project_attendance_cfg a
|
||||
LEFT JOIN sur_project sp ON a.project_id = sp.id
|
||||
LEFT JOIN sur_project_unit_info pu ON a.sub_dept_id=pu.unitId AND a.project_id=pu.projectId
|
||||
LEFT JOIN sys_dict_data sdd1 ON sdd1.dict_type = 'attendance_vendors' AND sdd1.dict_value = a.vendors_code
|
||||
) sur_project_attendance_cfg
|
||||
</sql>
|
||||
|
||||
<select id="selectSurProjectAttendanceCfgList" parameterType="SurProjectAttendanceCfg" resultMap="SurProjectAttendanceCfgResult">
|
||||
|
|
|
@ -6,12 +6,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
|
||||
<resultMap type="SurProjectAttendanceData" id="SurProjectAttendanceDataResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="cfgid" column="cfgid" />
|
||||
<result property="vendorsCode" column="vendors_code" />
|
||||
<result property="serverid" column="serverid" />
|
||||
<result property="workerId" column="workerId" />
|
||||
<result property="attendanceType" column="attendance_type" />
|
||||
<result property="attendanceTime" column="attendance_time" />
|
||||
<result property="identification" column="identification" />
|
||||
<result property="teamId" column="teamId" />
|
||||
<result property="workTypeCode" column="workTypeCode" />
|
||||
<result property="companyId" column="companyId" />
|
||||
<result property="vendorId" column="vendorId" />
|
||||
<result property="projectType" column="projectType" />
|
||||
<result property="deviceCode" column="device_code" />
|
||||
<result property="workPointId" column="work_point_id" />
|
||||
<result property="scanPhoto" column="scanPhoto" />
|
||||
<result property="other" column="other" />
|
||||
<result property="state" column="state" />
|
||||
<result property="remark" column="remark" />
|
||||
|
@ -23,18 +32,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</resultMap>
|
||||
|
||||
<sql id="selectSurProjectAttendanceDataVo">
|
||||
select id, vendors_code, workerId, attendance_type, attendance_time, device_code, work_point_id, other, state, remark, is_del, create_by, create_time, update_by, update_time from sur_project_attendance_data
|
||||
select id, cfgid, vendors_code, serverid, workerId, attendance_type, attendance_time, identification, teamId, workTypeCode, companyId, vendorId, projectType, device_code, work_point_id, scanPhoto, other, state, remark, is_del, create_by, create_time, update_by, update_time from sur_project_attendance_data
|
||||
</sql>
|
||||
|
||||
<select id="selectSurProjectAttendanceDataList" parameterType="SurProjectAttendanceData" resultMap="SurProjectAttendanceDataResult">
|
||||
<include refid="selectSurProjectAttendanceDataVo"/>
|
||||
<where>
|
||||
<if test="cfgid != null "> and cfgid = #{cfgid}</if>
|
||||
<if test="vendorsCode != null and vendorsCode != ''"> and vendors_code = #{vendorsCode}</if>
|
||||
<if test="serverid != null "> and serverid = #{serverid}</if>
|
||||
<if test="workerId != null "> and workerId = #{workerId}</if>
|
||||
<if test="attendanceType != null and attendanceType != ''"> and attendance_type = #{attendanceType}</if>
|
||||
<if test="attendanceTime != null and attendanceTime != ''"> and attendance_time = #{attendanceTime}</if>
|
||||
<if test="identification != null and identification != ''"> and identification = #{identification}</if>
|
||||
<if test="teamId != null "> and teamId = #{teamId}</if>
|
||||
<if test="workTypeCode != null and workTypeCode != ''"> and workTypeCode = #{workTypeCode}</if>
|
||||
<if test="companyId != null "> and companyId = #{companyId}</if>
|
||||
<if test="vendorId != null "> and vendorId = #{vendorId}</if>
|
||||
<if test="projectType != null "> and projectType = #{projectType}</if>
|
||||
<if test="deviceCode != null and deviceCode != ''"> and device_code = #{deviceCode}</if>
|
||||
<if test="workPointId != null and workPointId != ''"> and work_point_id = #{workPointId}</if>
|
||||
<if test="scanPhoto != null and scanPhoto != ''"> and scanPhoto = #{scanPhoto}</if>
|
||||
<if test="other != null and other != ''"> and other = #{other}</if>
|
||||
<if test="state != null "> and state = #{state}</if>
|
||||
<if test="isDel != null "> and is_del = #{isDel}</if>
|
||||
|
@ -49,12 +67,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<insert id="insertSurProjectAttendanceData" parameterType="SurProjectAttendanceData" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into sur_project_attendance_data
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="cfgid != null">cfgid,</if>
|
||||
<if test="vendorsCode != null">vendors_code,</if>
|
||||
<if test="serverid != null">serverid,</if>
|
||||
<if test="workerId != null">workerId,</if>
|
||||
<if test="attendanceType != null">attendance_type,</if>
|
||||
<if test="attendanceTime != null">attendance_time,</if>
|
||||
<if test="identification != null">identification,</if>
|
||||
<if test="teamId != null">teamId,</if>
|
||||
<if test="workTypeCode != null">workTypeCode,</if>
|
||||
<if test="companyId != null">companyId,</if>
|
||||
<if test="vendorId != null">vendorId,</if>
|
||||
<if test="projectType != null">projectType,</if>
|
||||
<if test="deviceCode != null">device_code,</if>
|
||||
<if test="workPointId != null">work_point_id,</if>
|
||||
<if test="scanPhoto != null">scanPhoto,</if>
|
||||
<if test="other != null">other,</if>
|
||||
<if test="state != null">state,</if>
|
||||
<if test="remark != null">remark,</if>
|
||||
|
@ -65,12 +92,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="updateTime != null">update_time,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="cfgid != null">#{cfgid},</if>
|
||||
<if test="vendorsCode != null">#{vendorsCode},</if>
|
||||
<if test="serverid != null">#{serverid},</if>
|
||||
<if test="workerId != null">#{workerId},</if>
|
||||
<if test="attendanceType != null">#{attendanceType},</if>
|
||||
<if test="attendanceTime != null">#{attendanceTime},</if>
|
||||
<if test="identification != null">#{identification},</if>
|
||||
<if test="teamId != null">#{teamId},</if>
|
||||
<if test="workTypeCode != null">#{workTypeCode},</if>
|
||||
<if test="companyId != null">#{companyId},</if>
|
||||
<if test="vendorId != null">#{vendorId},</if>
|
||||
<if test="projectType != null">#{projectType},</if>
|
||||
<if test="deviceCode != null">#{deviceCode},</if>
|
||||
<if test="workPointId != null">#{workPointId},</if>
|
||||
<if test="scanPhoto != null">#{scanPhoto},</if>
|
||||
<if test="other != null">#{other},</if>
|
||||
<if test="state != null">#{state},</if>
|
||||
<if test="remark != null">#{remark},</if>
|
||||
|
@ -85,12 +121,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<update id="updateSurProjectAttendanceData" parameterType="SurProjectAttendanceData">
|
||||
update sur_project_attendance_data
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="cfgid != null">cfgid = #{cfgid},</if>
|
||||
<if test="vendorsCode != null">vendors_code = #{vendorsCode},</if>
|
||||
<if test="serverid != null">serverid = #{serverid},</if>
|
||||
<if test="workerId != null">workerId = #{workerId},</if>
|
||||
<if test="attendanceType != null">attendance_type = #{attendanceType},</if>
|
||||
<if test="attendanceTime != null">attendance_time = #{attendanceTime},</if>
|
||||
<if test="identification != null">identification = #{identification},</if>
|
||||
<if test="teamId != null">teamId = #{teamId},</if>
|
||||
<if test="workTypeCode != null">workTypeCode = #{workTypeCode},</if>
|
||||
<if test="companyId != null">companyId = #{companyId},</if>
|
||||
<if test="vendorId != null">vendorId = #{vendorId},</if>
|
||||
<if test="projectType != null">projectType = #{projectType},</if>
|
||||
<if test="deviceCode != null">device_code = #{deviceCode},</if>
|
||||
<if test="workPointId != null">work_point_id = #{workPointId},</if>
|
||||
<if test="scanPhoto != null">scanPhoto = #{scanPhoto},</if>
|
||||
<if test="other != null">other = #{other},</if>
|
||||
<if test="state != null">state = #{state},</if>
|
||||
<if test="remark != null">remark = #{remark},</if>
|
||||
|
@ -113,4 +158,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
<select id="getLastServerId" parameterType="SurProjectAttendanceData" resultType="Long">
|
||||
SELECT IF(MAX(serverid),MAX(serverid),0) serverid FROM sur_project_attendance_data WHERE cfgid=#{cfgid}
|
||||
</select>
|
||||
</mapper>
|
|
@ -6,6 +6,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
|
||||
<resultMap type="SurProjectAttendanceUser" id="SurProjectAttendanceUserResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="cfgid" column="cfgid" />
|
||||
<result property="vendorsCode" column="vendors_code" />
|
||||
<result property="workerId" column="workerId" />
|
||||
<result property="laborWorkerId" column="laborWorkerId" />
|
||||
<result property="workerCategory" column="workerCategory" />
|
||||
|
@ -45,12 +47,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</resultMap>
|
||||
|
||||
<sql id="selectSurProjectAttendanceUserVo">
|
||||
select id, workerId, laborWorkerId, workerCategory, qrCode, name, ethnic, nativePlace, gender, birthDate, phone, degreeName, photo, recentPhoto, groupId, groupName, leader, workTypeCode, workTypeName, specWorkType, hatCode, state, enterDate, exitDate, companyId, companyName, vendorId, teamId, teamName, enterType, other, remark, is_del, create_by, create_time, update_by, update_time from sur_project_attendance_user
|
||||
select id, cfgid, vendors_code, workerId, laborWorkerId, workerCategory, qrCode, name, ethnic, nativePlace, gender, birthDate, phone, degreeName, photo, recentPhoto, groupId, groupName, leader, workTypeCode, workTypeName, specWorkType, hatCode, state, enterDate, exitDate, companyId, companyName, vendorId, teamId, teamName, enterType, other, remark, is_del, create_by, create_time, update_by, update_time from sur_project_attendance_user
|
||||
</sql>
|
||||
|
||||
<select id="selectSurProjectAttendanceUserList" parameterType="SurProjectAttendanceUser" resultMap="SurProjectAttendanceUserResult">
|
||||
<include refid="selectSurProjectAttendanceUserVo"/>
|
||||
<where>
|
||||
<if test="cfgid != null "> and cfgid = #{cfgid}</if>
|
||||
<if test="vendorsCode != null and vendorsCode != ''"> and vendors_code = #{vendorsCode}</if>
|
||||
<if test="workerId != null "> and workerId = #{workerId}</if>
|
||||
<if test="laborWorkerId != null "> and laborWorkerId = #{laborWorkerId}</if>
|
||||
<if test="workerCategory != null "> and workerCategory = #{workerCategory}</if>
|
||||
|
@ -93,6 +97,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<insert id="insertSurProjectAttendanceUser" parameterType="SurProjectAttendanceUser" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into sur_project_attendance_user
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="cfgid != null">cfgid,</if>
|
||||
<if test="vendorsCode != null">vendors_code,</if>
|
||||
<if test="workerId != null">workerId,</if>
|
||||
<if test="laborWorkerId != null">laborWorkerId,</if>
|
||||
<if test="workerCategory != null">workerCategory,</if>
|
||||
|
@ -131,6 +137,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="updateTime != null">update_time,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="cfgid != null">#{cfgid},</if>
|
||||
<if test="vendorsCode != null">#{vendorsCode},</if>
|
||||
<if test="workerId != null">#{workerId},</if>
|
||||
<if test="laborWorkerId != null">#{laborWorkerId},</if>
|
||||
<if test="workerCategory != null">#{workerCategory},</if>
|
||||
|
@ -173,6 +181,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<update id="updateSurProjectAttendanceUser" parameterType="SurProjectAttendanceUser">
|
||||
update sur_project_attendance_user
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="cfgid != null">cfgid = #{cfgid},</if>
|
||||
<if test="vendorsCode != null">vendors_code = #{vendorsCode},</if>
|
||||
<if test="workerId != null">workerId = #{workerId},</if>
|
||||
<if test="laborWorkerId != null">laborWorkerId = #{laborWorkerId},</if>
|
||||
<if test="workerCategory != null">workerCategory = #{workerCategory},</if>
|
||||
|
@ -223,4 +233,41 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
<sql id="sqlAttendanceData">
|
||||
(
|
||||
SELECT * FROM sur_project_attendance_data WHERE DATE(attendance_time)=date(#{createBy}) AND cfgid IN (
|
||||
SELECT id FROM sur_project_attendance_cfg WHERE project_id=#{projectId} AND sub_dept_id=#{subDeptId} AND vendors_code=#{vendorsCode}
|
||||
) ) xx
|
||||
</sql>
|
||||
<select id="queryAttendanceData" parameterType="SurProjectAttendanceCfg" resultMap="SurProjectAttendanceUserResult">
|
||||
|
||||
select n.*,m.inTime,m.outTime from (
|
||||
|
||||
SELECT * FROM (
|
||||
SELECT workerId,attendance_time inTime,null outtime FROM sur_project_attendance_data WHERE id IN (
|
||||
SELECT min(id) id FROM <include refid="sqlAttendanceData"/> WHERE attendance_type='e' GROUP BY workerId )) X WHERE workerId NOT IN (
|
||||
SELECT workerId FROM <include refid="sqlAttendanceData"/> WHERE attendance_type='l' GROUP BY workerId
|
||||
)
|
||||
|
||||
union
|
||||
|
||||
select * from (
|
||||
select workerId,null inTime,attendance_time outTime from sur_project_attendance_data where id in (
|
||||
select max(id) id from <include refid="sqlAttendanceData"/> where attendance_type='l' group by workerId )) x where workerId not in (
|
||||
SELECT workerId FROM <include refid="sqlAttendanceData"/> WHERE attendance_type='e' GROUP BY workerId
|
||||
)
|
||||
|
||||
union
|
||||
|
||||
select x.workerId,y.attendance_time inTime,x.attendance_time outTime from (
|
||||
SELECT id,workerId,attendance_time FROM sur_project_attendance_data WHERE id IN (
|
||||
SELECT MAX(id) id FROM <include refid="sqlAttendanceData"/> WHERE attendance_type='l' GROUP BY workerId )
|
||||
) x cross join (
|
||||
|
||||
SELECT id,workerId,attendance_time FROM sur_project_attendance_data WHERE id IN (
|
||||
SELECT MIN(id) id FROM <include refid="sqlAttendanceData"/> WHERE attendance_type='e' GROUP BY workerId )
|
||||
) y on x.workerId=y.workerId
|
||||
|
||||
) m left join sur_project_attendance_user n on m.workerId=n.workerId
|
||||
</select>
|
||||
</mapper>
|
Loading…
Reference in New Issue