Merge remote-tracking branch 'origin/master'
| | |
| | | |
| | | // 同步 |
| | | export function syncDevices (data) { |
| | | return request.post('/business/erpsync/syncDevices', data) |
| | | return request.post('/business/hksync/syncDevices', data) |
| | | } |
| | | |
| | | // 获取门禁集合-提供给门禁组 |
| | | export function getList (data) { |
| | | return request.post('/business/device/getList', data) |
| | | } |
| | | |
| | | // 修改 |
| | |
| | | return request.post('/business/deviceRole/updateById', data) |
| | | } |
| | | |
| | | // 根据ID修改默认门禁组状态 |
| | | export function updateStatusById (data) { |
| | | return request.post('/business/deviceRole/updateStatusById', data) |
| | | } |
| | | |
| | | // 【海康】全量同步访客权限组接口 |
| | | export function syncPrivilege (data) { |
| | | return request.post('/business/hksync/syncPrivilege', data) |
| | | } |
| | | |
| | | // 删除 |
| | | export function deleteById (id) { |
| | | return request.get(`/business/deviceRole/delete/${id}`) |
| | |
| | | autoLogin: false |
| | | }) |
| | | } |
| | | |
| | | // 访客来访配置 |
| | | export function getVisitConfigDTO () { |
| | | return request.get('/system/dictData/getVisitConfigDTO') |
| | | } |
| | | |
| | | // 劳务来访配置 |
| | | export function getLaborConfigDTO () { |
| | | return request.get('/system/dictData/getLaborConfigDTO') |
| | | } |
| | | |
| | | // 修改访客来访配置 |
| | | export function updateVisitConfig (data) { |
| | | return request.post('/system/dictData/updateVisitConfig', data) |
| | | } |
| | | |
| | | // 修改劳务来访配置 |
| | | export function updateLaborConfigDTO (data) { |
| | | return request.post('/system/dictData/updateLaborConfigDTO', data) |
| | | } |
| | |
| | | <el-form-item label="门禁组名称" prop="name"> |
| | | <el-input v-model="form.name" placeholder="请输入门禁组名称" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="授权门禁" prop="doorIds"> |
| | | <el-radio-group v-model="form.doorIds"> |
| | | <el-radio :label="3">访客</el-radio> |
| | | <el-radio :label="6">劳务人员</el-radio> |
| | | <el-form-item label="适用用户" prop="type"> |
| | | <el-radio-group v-model="form.type"> |
| | | <el-radio label="0">劳务访客</el-radio> |
| | | <el-radio label="1">普通访客</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-form> |
| | |
| | | form: { |
| | | id: null, |
| | | name: '', |
| | | doorIds: '' |
| | | type: '' |
| | | }, |
| | | // 验证规则 |
| | | rules: { |
| | |
| | | @confirm="confirm" |
| | | > |
| | | <el-form :model="form" ref="form" :rules="rules"> |
| | | <el-form-item label="名称" prop="name"> |
| | | <el-form-item label="门禁组名称" prop="name"> |
| | | <el-input v-model="form.name" placeholder="请输入名称" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="是否默认" prop="isDefault"> |
| | | <el-form-item label="默认门禁组" prop="isDefault"> |
| | | <el-switch |
| | | v-model="form.isDefault" |
| | | active-color="#13ce66" |
| | | inactive-color="#ff4949" |
| | | :active-value="1" |
| | | :inactive-value="0"> |
| | | :active-value="0" |
| | | :inactive-value="1"> |
| | | </el-switch> |
| | | </el-form-item> |
| | | <el-form-item label="授权门禁" prop="doorIds"> |
| | | <el-radio-group v-model="form.doorIds"> |
| | | <el-radio :label="3">全部门禁</el-radio> |
| | | <el-radio :label="6">部分门禁</el-radio> |
| | | <el-radio-group v-model="form.radio" @input="changeRadio"> |
| | | <el-radio :label="0">全部门禁</el-radio> |
| | | <el-radio :label="1">部分门禁</el-radio> |
| | | </el-radio-group> |
| | | <el-checkbox-group v-model="form.doorIds"> |
| | | <el-checkbox label="门禁A"></el-checkbox> |
| | | <el-checkbox label="门禁B"></el-checkbox> |
| | | <el-checkbox label="门禁C"></el-checkbox> |
| | | <el-checkbox-group v-model="form.doorIds" v-if="form.radio === 1"> |
| | | <el-checkbox :label="item.id" v-for="(item, index) in device" :key="index">{{item.name}}</el-checkbox> |
| | | </el-checkbox-group> |
| | | </el-form-item> |
| | | </el-form> |
| | |
| | | <script> |
| | | import BaseOpera from '@/components/base/BaseOpera' |
| | | import GlobalWindow from '@/components/common/GlobalWindow' |
| | | import { getList } from '@/api/business/device' |
| | | export default { |
| | | name: 'OperaDeviceRoleWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow }, |
| | | data () { |
| | | var validatePass = (rule, value, callback) => { |
| | | if (this.form.radio === 1) { |
| | | if (value.length === 0) { |
| | | callback(new Error('请选择门禁设备')) |
| | | } |
| | | } |
| | | callback() |
| | | } |
| | | return { |
| | | // 表单数据 |
| | | form: { |
| | | id: null, |
| | | name: '', |
| | | isDefault: '', |
| | | doorIds: '' |
| | | isDefault: 1, |
| | | doorIds: [], |
| | | status: 1, |
| | | radio: 0 |
| | | }, |
| | | device: [], |
| | | // 验证规则 |
| | | rules: { |
| | | name: [ |
| | | { required: true, message: '请输入门禁组名称' } |
| | | ], |
| | | doorIds: [ |
| | | { validator: validatePass, trigger: 'blur' } |
| | | ] |
| | | } |
| | | } |
| | | }, |
| | |
| | | api: '/business/deviceRole', |
| | | 'field.id': 'id' |
| | | }) |
| | | }, |
| | | methods: { |
| | | confirm () { |
| | | this.$refs.form.validate((valid) => { |
| | | if (!valid) { |
| | | return |
| | | } |
| | | // 调用新建接口 |
| | | this.isWorking = true |
| | | if (this.form.id == null || this.form.id === '') { |
| | | const doorNames = [] |
| | | this.form.doorIds.forEach(item => { |
| | | this.device.forEach(row => { |
| | | if (item === row.id) { |
| | | doorNames.push(row.name) |
| | | } |
| | | }) |
| | | }) |
| | | this.api.create({ |
| | | name: this.form.name, |
| | | status: this.form.status, |
| | | doorNames: doorNames.join(','), |
| | | type: 2, |
| | | isDefault: this.form.isDefault, |
| | | doorIds: this.form.doorIds.join(',') |
| | | }) |
| | | .then(() => { |
| | | this.visible = false |
| | | this.$tip.apiSuccess('新建成功') |
| | | this.$emit('success') |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking = false |
| | | }) |
| | | } else { |
| | | const doorNames = [] |
| | | this.form.doorIds.forEach(item => { |
| | | this.device.forEach(row => { |
| | | if (item === row.id) { |
| | | doorNames.push(row.name) |
| | | } |
| | | }) |
| | | }) |
| | | this.api.updateById({ |
| | | id: this.form.id, |
| | | name: this.form.name, |
| | | status: this.form.status, |
| | | isDefault: this.form.isDefault, |
| | | type: 2, |
| | | doorNames: doorNames.join(','), |
| | | doorIds: this.form.doorIds.join(',') |
| | | }) |
| | | .then(() => { |
| | | this.visible = false |
| | | this.$tip.apiSuccess('修改成功') |
| | | this.$emit('success') |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking = false |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | // 获取设备 |
| | | getLists () { |
| | | getList({}) |
| | | .then(res => { |
| | | this.device = res |
| | | }) |
| | | }, |
| | | changeRadio (e) { |
| | | this.form.doorIds = [] |
| | | }, |
| | | open (title, target) { |
| | | this.getLists() |
| | | this.title = title |
| | | this.visible = true |
| | | // 新建 |
| | | if (target == null) { |
| | | this.$nextTick(() => { |
| | | this.$refs.form.resetFields() |
| | | this.form[this.configData['field.id']] = null |
| | | }) |
| | | return |
| | | } |
| | | // 编辑 |
| | | this.$nextTick(() => { |
| | | for (const key in this.form) { |
| | | this.form[key] = target[key] |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | <el-input v-model="form.title" placeholder="请输入题目" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="题目类型" prop="type"> |
| | | <el-select v-model="form.type" placeholder="请选择"> |
| | | <el-option label="判断" value="0"></el-option> |
| | | <el-option label="单选" value="1"></el-option> |
| | | <el-option label="多选" value="2"></el-option> |
| | | <el-select v-model="form.type" @change="changeType" placeholder="请选择"> |
| | | <el-option label="判断" :value="0"></el-option> |
| | | <el-option label="单选" :value="1"></el-option> |
| | | <el-option label="多选" :value="2"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="适用用户" prop="useType"> |
| | | <el-radio-group v-model="form.useType"> |
| | | <el-radio :label="0">劳务人员</el-radio> |
| | | <el-radio :label="1">普通访客</el-radio> |
| | | <el-radio :label="0">访客和劳务</el-radio> |
| | | <el-radio :label="1">仅访客</el-radio> |
| | | <el-radio :label="2">仅劳务</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="题目顺序(升序)" prop="sortnu"> |
| | | <el-input v-model="form.sortnu" placeholder="请输入" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="选项集合" prop="options" v-if="form.type === '1' || form.type === '2'"> |
| | | <el-form-item label="选项集合" prop="objectList" v-if="form.type === 1 || form.type === 2"> |
| | | <el-button type="primary" style="width: 120px; margin-bottom: 15px;" @click="add" icon="el-icon-plus">添加选项</el-button> |
| | | <el-tabs v-model="editableTabsValue" type="card" closable @tab-remove="removeTab"> |
| | | <el-tab-pane |
| | | v-for="item in problems" |
| | | :key="item.name" |
| | | :label="item.name" |
| | | v-for="item in form.objectList" |
| | | :key="item.code" |
| | | :label="item.sort" |
| | | :name="item.id" |
| | | > |
| | | <el-input v-model="item.val" placeholder="请输入" v-trim/> |
| | | <el-input v-model="item.value" placeholder="请输入" v-trim/> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </el-form-item> |
| | | <el-form-item label="正确答案" prop="answer"> |
| | | <el-select v-model="form.answer" multiple placeholder="请选择正确答案"> |
| | | <el-select v-model="form.answer" v-if="form.type === 0" placeholder="请选择正确答案"> |
| | | <el-option label="正确" value="正确"></el-option> |
| | | <el-option label="错误" value="错误"></el-option> |
| | | </el-select> |
| | | <el-select v-model="form.answer" v-if="form.type === 1" placeholder="请选择正确答案"> |
| | | <el-option |
| | | v-for="item in problems" |
| | | v-for="item in form.objectList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id"> |
| | | :label="item.sort" |
| | | :value="item.code"> |
| | | </el-option> |
| | | </el-select> |
| | | <el-select v-model="form.answer" v-if="form.type === 2" multiple placeholder="请选择正确答案"> |
| | | <el-option |
| | | v-for="item in form.objectList" |
| | | :key="item.id" |
| | | :label="item.sort" |
| | | :value="item.code"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | form: { |
| | | id: null, |
| | | title: '', |
| | | options: '', |
| | | objectList: [ |
| | | { code: 'A', value: '', sort: '选项A', id: '0' } |
| | | ], |
| | | answer: '', |
| | | sortnu: '', |
| | | type: '', |
| | | useType: '' |
| | | type: 0, |
| | | useType: 0 |
| | | }, |
| | | // 验证规则 |
| | | rules: { |
| | | title: [ |
| | | { required: true, message: '请输入题目名称' } |
| | | ], |
| | | type: [ |
| | | { required: true, message: '请选择题目类型' } |
| | | ], |
| | | useType: [ |
| | | { required: true, message: '请选择适用用户' } |
| | | ], |
| | | answer: [ |
| | | { required: true, message: '请选择正确答案' } |
| | | ] |
| | | }, |
| | | editableTabsValue: '0', |
| | | problems: [ |
| | | { name: '选择A', val: '', id: '0' } |
| | | ], |
| | | arr: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] |
| | | } |
| | | }, |
| | |
| | | }) |
| | | }, |
| | | methods: { |
| | | open (title, target) { |
| | | this.title = title |
| | | this.editableTabsValue = '0' |
| | | this.visible = true |
| | | // 新建 |
| | | if (target == null) { |
| | | this.$nextTick(() => { |
| | | this.$refs.form.resetFields() |
| | | this.form[this.configData['field.id']] = null |
| | | }) |
| | | return |
| | | } |
| | | // 编辑 |
| | | this.$nextTick(() => { |
| | | for (const key in this.form) { |
| | | this.form[key] = target[key] |
| | | } |
| | | }) |
| | | }, |
| | | confirm () { |
| | | this.$refs.form.validate((valid) => { |
| | | if (!valid) { |
| | | return |
| | | } |
| | | // 调用新建接口 |
| | | this.isWorking = true |
| | | if (this.form.id == null || this.form.id === '') { |
| | | this.api.create({ |
| | | // eslint-disable-next-line valid-typeof |
| | | answer: typeof this.form.answer === 'object' ? this.form.answer.join(',') : this.form.answer, |
| | | title: this.form.title, |
| | | sortnu: this.form.sortnu, |
| | | type: this.form.type, |
| | | useType: this.form.useType, |
| | | objectList: this.form.objectList |
| | | }) |
| | | .then(() => { |
| | | this.visible = false |
| | | this.$tip.apiSuccess('新建成功') |
| | | this.$emit('success') |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking = false |
| | | }) |
| | | } else { |
| | | this.api.updateById({ |
| | | id: this.form.id, |
| | | // eslint-disable-next-line valid-typeof |
| | | answer: typeof this.form.answer === 'object' ? this.form.answer.join(',') : this.form.answer, |
| | | title: this.form.title, |
| | | sortnu: this.form.sortnu, |
| | | type: this.form.type, |
| | | useType: this.form.useType, |
| | | objectList: this.form.objectList |
| | | }) |
| | | .then(() => { |
| | | this.visible = false |
| | | this.$tip.apiSuccess('修改成功') |
| | | this.$emit('success') |
| | | }) |
| | | .catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | .finally(() => { |
| | | this.isWorking = false |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | changeType (e) { |
| | | this.editableTabsValue = '0' |
| | | this.form.objectList = [ |
| | | { code: 'A', value: '', sort: '选项A', id: '0' } |
| | | ] |
| | | this.$nextTick(() => { |
| | | if (e === '0' || e === '1') { |
| | | this.form.answer = '' |
| | | } else { |
| | | this.form.answer = [] |
| | | } |
| | | }) |
| | | this.$forceUpdate() |
| | | }, |
| | | removeTab (e) { |
| | | this.problems.splice(e, 1) |
| | | this.form.objectList.splice(e, 1) |
| | | if (e === this.editableTabsValue) { |
| | | this.editableTabsValue = '0' |
| | | } |
| | | this.problems.forEach((item, index) => { |
| | | item.name = '选项' + this.arr[index] |
| | | this.form.objectList.forEach((item, index) => { |
| | | item.code = this.arr[index] |
| | | item.sort = '选项' + this.arr[index] |
| | | item.id = index.toString() |
| | | }) |
| | | }, |
| | | add () { |
| | | const name = '选项' + this.arr[this.problems.length] |
| | | this.problems.push({ name, val: '', id: this.problems.length.toString() }) |
| | | const sort = '选项' + this.arr[this.form.objectList.length] |
| | | this.form.objectList.push({ sort, value: '', code: this.arr[this.form.objectList.length], id: this.form.objectList.length.toString() }) |
| | | } |
| | | } |
| | | } |
| | |
| | | <span v-if="row.status === 1">启用</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | v-if="containPermissions(['business:device:update'])" |
| | | label="操作" |
| | | min-width="120" |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.operaDeviceWindow.open('编辑设备信息表', row)" icon="el-icon-edit" v-permissions="['business:company:update']">编辑</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- <el-table-column--> |
| | | <!-- v-if="containPermissions(['business:device:update'])"--> |
| | | <!-- label="操作"--> |
| | | <!-- min-width="120"--> |
| | | <!-- fixed="right"--> |
| | | <!-- >--> |
| | | <!-- <template slot-scope="{row}">--> |
| | | <!-- <el-button type="text" @click="$refs.operaDeviceWindow.open('编辑设备信息表', row)" icon="el-icon-edit" v-permissions="['business:company:update']">编辑</el-button>--> |
| | | <!-- </template>--> |
| | | <!-- </el-table-column>--> |
| | | </el-table> |
| | | <pagination |
| | | @size-change="handleSizeChange" |
| | |
| | | <template> |
| | | <TableLayout :permissions="['business:company:query']"> |
| | | <TableLayout :permissions="['business:devicerole:query']"> |
| | | <!-- 搜索表单 --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item label="门禁组名称" prop="name"> |
| | |
| | | </el-form> |
| | | <!-- 表格和分页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['business:company:create', 'business:company:delete']"> |
| | | <li><el-button type="primary" @click="$refs.operaDeviceRoleWindow.open('新建门禁角色信息表')" icon="el-icon-plus" v-permissions="['business:company:create']">新建</el-button></li> |
| | | <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:company:delete']">删除</el-button></li> |
| | | <ul class="toolbar" v-permissions="['business:devicerole:create', 'business:devicerole:delete']"> |
| | | <li><el-button type="primary" @click="$refs.operaDeviceRoleWindow.open('新建门禁角色')" icon="el-icon-plus" v-permissions="['business:devicerole:create']">新建</el-button></li> |
| | | <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:devicerole:delete']">删除</el-button></li> |
| | | </ul> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | |
| | | > |
| | | <el-table-column type="selection" width="55"></el-table-column> |
| | | <el-table-column prop="name" label="门禁组名称" min-width="100px"></el-table-column> |
| | | <el-table-column prop="name" label="使用人数" min-width="100px"></el-table-column> |
| | | <el-table-column prop="memberNum" label="使用人数" min-width="100px"></el-table-column> |
| | | <el-table-column prop="isDefault" label="是否默认" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <el-switch |
| | | @change="changeIsDefault" |
| | | v-model="row.isDefault" |
| | | active-color="#13ce66" |
| | | inactive-color="#ff4949" |
| | | :active-value="1" |
| | | :inactive-value="0"> |
| | | :active-value="0" |
| | | :inactive-value="1"> |
| | | </el-switch> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | v-if="containPermissions(['business:company:update', 'business:company:delete'])" |
| | | v-if="containPermissions(['business:devicerole:update', 'business:devicerole:delete'])" |
| | | label="操作" |
| | | min-width="120" |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.operaDeviceRoleWindow.open('编辑门禁角色信息表', row)" icon="el-icon-edit" v-permissions="['business:company:update']">编辑</el-button> |
| | | <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:company:delete']">删除</el-button> |
| | | <el-button type="text" @click="edit(row)" icon="el-icon-edit" v-permissions="['business:devicerole:update']">编辑</el-button> |
| | | <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:devicerole:delete']">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import Pagination from '@/components/common/Pagination' |
| | | import OperaDeviceRoleWindow from '@/components/business/OperaDeviceRoleWindow' |
| | | import { updateStatusById } from '@/api/business/deviceRole' |
| | | export default { |
| | | name: 'DeviceRole', |
| | | extends: BaseTable, |
| | |
| | | // 搜索 |
| | | searchForm: { |
| | | name: '', |
| | | isdeleted: 0, |
| | | type: '2' |
| | | } |
| | | } |
| | | }, |
| | | created () { |
| | | this.config({ |
| | | module: '门禁角色信息表', |
| | | module: '门禁角色', |
| | | api: '/business/deviceRole', |
| | | 'field.id': 'id', |
| | | 'field.main': 'id' |
| | | }) |
| | | this.search() |
| | | }, |
| | | methods: { |
| | | changeIsDefault (r) { |
| | | updateStatusById({ isDefault: r, type: 2 }) |
| | | .finally(() => { |
| | | this.search() |
| | | }) |
| | | }, |
| | | edit (row) { |
| | | if (row.doorIds) { |
| | | row.radio = 1 |
| | | row.doorIds = row.doorIds.split(',') |
| | | row.doorIds = row.doorIds.map(item => Number(item)) |
| | | } else { |
| | | row.radio = 0 |
| | | row.doorIds = [] |
| | | } |
| | | this.$refs.operaDeviceRoleWindow.open('编辑门禁角色', row) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | <template> |
| | | <TableLayout :permissions="['business:company:query']"> |
| | | <TableLayout :permissions="['business:devicerole:query']"> |
| | | <!-- 搜索表单 --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item label="门禁组名称" prop="name"> |
| | |
| | | <!-- 表格和分页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar"> |
| | | <li><el-button type="primary">同步</el-button></li> |
| | | <li><el-button type="primary" @click="synchronousData">同步</el-button></li> |
| | | </ul> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | |
| | | > |
| | | <el-table-column type="selection" width="55"></el-table-column> |
| | | <el-table-column prop="name" label="门禁组名称" min-width="100px"></el-table-column> |
| | | <el-table-column prop="name" label="适用用户类型" min-width="100px"></el-table-column> |
| | | <el-table-column prop="name" label="使用人数" min-width="100px"></el-table-column> |
| | | <el-table-column label="适用用户类型" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.type === '0'">劳务访客</span> |
| | | <span v-if="row.type === '1'">普通访客</span> |
| | | <span v-if="row.type === '2'">内部人员</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="memberNum" label="使用人数" min-width="100px"></el-table-column> |
| | | <el-table-column prop="isDefault" label="是否默认" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.isDefault === 1">是</span> |
| | | <span v-if="row.isDefault === 0">否</span> |
| | | <span v-if="row.isDefault === 0">是</span> |
| | | <span v-if="row.isDefault === 1">否</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | v-if="containPermissions(['business:company:update', 'business:company:delete'])" |
| | | v-if="containPermissions(['business:devicerole:update'])" |
| | | label="操作" |
| | | min-width="120" |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.operaDeviceRoleWindow.open('编辑门禁角色信息表', row)" icon="el-icon-edit" v-permissions="['business:company:update']">编辑</el-button> |
| | | <el-button type="text" @click="$refs.operaDeviceRoleWindow.open('编辑门禁角色信息表', row)" icon="el-icon-edit" v-permissions="['business:devicerole:update']">编辑</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import Pagination from '@/components/common/Pagination' |
| | | import OperaDeviceRoleWindow from '@/components/business/OperaDeviceRoleFWindow' |
| | | import { syncPrivilege } from '@/api/business/deviceRole' |
| | | export default { |
| | | name: 'DeviceRole', |
| | | extends: BaseTable, |
| | |
| | | // 搜索 |
| | | searchForm: { |
| | | name: '', |
| | | type: '1' |
| | | type: '0,1' |
| | | } |
| | | } |
| | | }, |
| | |
| | | 'field.main': 'id' |
| | | }) |
| | | this.search() |
| | | }, |
| | | methods: { |
| | | synchronousData () { |
| | | this.$confirm('确认同步吗?', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | syncPrivilege({}) |
| | | .then(res => { |
| | | this.$message({ type: 'success', message: '同步成功' }) |
| | | this.search() |
| | | }) |
| | | }).catch(() => { |
| | | |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | <template> |
| | | <div class="box"> |
| | | <el-form :model="form" ref="form" label-width="140px"> |
| | | <el-form-item label="来访预约方式:" prop="doorIds"> |
| | | <el-radio-group v-model="form.doorIds"> |
| | | <el-radio :label="3">预约免登记</el-radio> |
| | | <el-radio :label="6">预约后登记(需要配备访客机)</el-radio> |
| | | <el-form-item label="来访预约方式:" prop="reservationWay"> |
| | | <el-radio-group v-model="form.reservationWay"> |
| | | <el-radio :label="0">预约免登记</el-radio> |
| | | <el-radio :label="1">预约后登记(需要配备访客机)</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="被访人校验方式:" prop="doorIds"> |
| | | <el-radio-group v-model="form.doorIds"> |
| | | <el-radio :label="3">仅手机号</el-radio> |
| | | <el-radio :label="6">手机号&姓名</el-radio> |
| | | <el-form-item label="被访人校验方式:" prop="checkVisit"> |
| | | <el-radio-group v-model="form.checkVisit"> |
| | | <el-radio :label="0">仅手机号</el-radio> |
| | | <el-radio :label="1">手机号&姓名</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="健康证是否必填:" prop="doorIds"> |
| | | <el-radio-group v-model="form.doorIds"> |
| | | <el-radio :label="3">否</el-radio> |
| | | <el-radio :label="6">是</el-radio> |
| | | <el-form-item label="健康证是否必填:" prop="healthCard"> |
| | | <el-radio-group v-model="form.healthCard"> |
| | | <el-radio :label="0">否</el-radio> |
| | | <el-radio :label="1">是</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="访客是否答题:" prop="doorIds"> |
| | | <el-form-item label="访客是否答题:" prop="isAnswer"> |
| | | <el-switch |
| | | v-model="form.doorIds" |
| | | v-model="form.isAnswer" |
| | | active-color="#13ce66" |
| | | inactive-color="#ff4949" |
| | | :active-value="1" |
| | | :inactive-value="0"> |
| | | </el-switch> |
| | | </el-form-item> |
| | | <el-form-item label="访客答题主题:" prop="doorIds"> |
| | | <el-input style="width: 50%;" v-model="form.doorIds" placeholder="请输入答题标题" v-trim/> |
| | | <el-form-item label="访客答题主题:" prop="theme"> |
| | | <el-input style="width: 50%;" v-model="form.theme" placeholder="请输入答题标题" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="访客答题说明:" prop="doorIds"> |
| | | <el-input style="width: 50%;" type="textarea" v-model="form.doorIds" placeholder="请输入" v-trim/> |
| | | <el-form-item label="访客答题说明:" prop="description"> |
| | | <el-input style="width: 50%;" type="textarea" v-model="form.description" placeholder="请输入" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary">保存配置项</el-button> |
| | | <el-button type="primary" @click="submit">保存配置项</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getLaborConfigDTO, updateLaborConfigDTO } from '@/api/system/common' |
| | | export default { |
| | | name: 'visitorSources', |
| | | |
| | | data() { |
| | | return { |
| | | form: { |
| | | doorIds: '' |
| | | id: null, |
| | | checkVisit: 0, |
| | | reservationWay: 0, |
| | | healthCard: 0, |
| | | isAnswer: 0, |
| | | theme: '', |
| | | description: '' |
| | | } |
| | | } |
| | | }, |
| | | |
| | | created () { |
| | | this.getData() |
| | | }, |
| | | |
| | | methods: { |
| | | getData () { |
| | | getLaborConfigDTO({}) |
| | | .then(res => { |
| | | this.form.id = res.id |
| | | this.form.checkVisit = res.LaborConfigParam.checkVisit |
| | | this.form.description = res.description |
| | | this.form.healthCard = res.LaborConfigParam.healthCard |
| | | this.form.isAnswer = res.LaborConfigParam.isAnswer |
| | | this.form.reservationWay = res.LaborConfigParam.reservationWay |
| | | this.form.theme = res.theme |
| | | }) |
| | | }, |
| | | submit () { |
| | | updateLaborConfigDTO({ |
| | | LaborConfigParam: { |
| | | isAnswer: this.form.isAnswer, |
| | | healthCard: this.form.healthCard, |
| | | checkVisit: this.form.checkVisit, |
| | | reservationWay: this.form.reservationWay |
| | | }, |
| | | description: this.form.description, |
| | | theme: this.form.theme |
| | | }).then(res => { |
| | | this.$message.success('保存成功') |
| | | this.getData() |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | <el-form-item label="公司名称" prop="companyName"> |
| | | <el-input v-model="searchForm.companyName" placeholder="请输入" @keypress.enter.native="search"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="人员类型" prop="companyId"> |
| | | <el-select v-model="searchForm.code" placeholder="请选择"> |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | <el-form-item label="人员类型" prop="type"> |
| | | <el-select v-model="searchForm.type" placeholder="请选择"> |
| | | <el-option label="劳务访客" value="0"></el-option> |
| | | <el-option label="普通访客" value="1"></el-option> |
| | | <el-option label="内部人员" value="2"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <section> |
| | |
| | | <el-table-column prop="name" label="答题人" min-width="100px"></el-table-column> |
| | | <el-table-column prop="phone" label="联系电话" min-width="100px"></el-table-column> |
| | | <el-table-column prop="companyName" label="公司名称" min-width="100px"></el-table-column> |
| | | <el-table-column prop="phone" label="用户类型" min-width="100px"></el-table-column> |
| | | <el-table-column label="用户类型" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.type === 0">劳务访客</span> |
| | | <span v-if="row.type === 1">普通访客</span> |
| | | <span v-if="row.type === 2">内部人员</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="createDate" label="答题时间" min-width="100px"></el-table-column> |
| | | </el-table> |
| | | <pagination |
| | |
| | | // 搜索 |
| | | searchForm: { |
| | | name: '', |
| | | companyName: '' |
| | | companyName: '', |
| | | type: '' |
| | | }, |
| | | options: [] |
| | | } |
| | |
| | | <template> |
| | | <TableLayout :permissions="['business:company:query']"> |
| | | <TableLayout :permissions="['business:problems:query']"> |
| | | <!-- 搜索表单 --> |
| | | <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> |
| | | <el-form-item label="题目名称" prop="title"> |
| | |
| | | </el-form-item> |
| | | <el-form-item label="人员类型" prop="useType"> |
| | | <el-select v-model="searchForm.useType" placeholder="请选择" @keypress.enter.native="search"> |
| | | <el-option label="劳务人员" value="0"></el-option> |
| | | <el-option label="普通访客" value="1"></el-option> |
| | | <el-option label="访客和劳务" value="0"></el-option> |
| | | <el-option label="仅访客" value="1"></el-option> |
| | | <el-option label="仅劳务" value="2"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <section> |
| | |
| | | </el-form> |
| | | <!-- 表格和分页 --> |
| | | <template v-slot:table-wrap> |
| | | <ul class="toolbar" v-permissions="['business:company:create']"> |
| | | <li><el-button type="primary" @click="$refs.operaProblemsWindow.open('新建试题信息表')" icon="el-icon-plus" v-permissions="['business:company:create']">新建</el-button></li> |
| | | <ul class="toolbar" v-permissions="['business:problems:create']"> |
| | | <li><el-button type="primary" @click="$refs.operaProblemsWindow.open('新建试题信息表')" icon="el-icon-plus" v-permissions="['business:problems:create']">新建</el-button></li> |
| | | </ul> |
| | | <el-table |
| | | v-loading="isWorking.search" |
| | | :data="tableData.list" |
| | | stripe |
| | | > |
| | | <el-table-column prop="title" label="题目名称" min-width="100px"></el-table-column> |
| | | <el-table-column prop="title" label="题目名称" min-width="150px"></el-table-column> |
| | | <el-table-column prop="useType" label="适用人员类型" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.useType === 0">劳务人员</span> |
| | | <span v-if="row.useType === 1">普通访客</span> |
| | | <span v-if="row.useType === 0">访客和劳务</span> |
| | | <span v-if="row.useType === 1">仅访客</span> |
| | | <span v-if="row.useType === 2">仅劳务</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="type" label="题目类型" min-width="100px"> |
| | | <template slot-scope="{row}"> |
| | | <span v-if="row.useType === 0">单选</span> |
| | | <span v-if="row.useType === 1">多选</span> |
| | | <span v-if="row.type === 0">判断</span> |
| | | <span v-if="row.type === 1">单选</span> |
| | | <span v-if="row.type === 2">多选</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="sortnu" label="题目顺序(升序)" min-width="100px"></el-table-column> |
| | | <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column> |
| | | <el-table-column prop="creator" label="创建人编码" min-width="100px"></el-table-column> |
| | | <el-table-column prop="creatorName" label="创建人" min-width="100px"></el-table-column> |
| | | <el-table-column |
| | | v-if="containPermissions(['business:company:update', 'business:company:delete'])" |
| | | label="操作" |
| | |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="{row}"> |
| | | <el-button type="text" @click="$refs.operaProblemsWindow.open('编辑试题信息表', row)" icon="el-icon-edit" v-permissions="['business:company:update']">编辑</el-button> |
| | | <el-button type="text" @click="edit(row)" icon="el-icon-edit" v-permissions="['business:company:update']">编辑</el-button> |
| | | <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:company:delete']">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | 'field.main': 'id' |
| | | }) |
| | | this.search() |
| | | }, |
| | | methods: { |
| | | edit (row) { |
| | | if (row.objectList && row.objectList.length > 0) { |
| | | row.objectList = row.objectList.map((item, index) => { |
| | | return { |
| | | code: item.code, |
| | | value: item.value, |
| | | sort: '选项' + item.code, |
| | | id: index.toString() |
| | | } |
| | | }) |
| | | } else { |
| | | row.objectList = [] |
| | | } |
| | | this.$refs.operaProblemsWindow.open('编辑试题信息', row) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | <template> |
| | | <div class="box"> |
| | | <el-form :model="form" ref="form" label-width="140px"> |
| | | <el-form-item label="来访预约方式:" prop="doorIds"> |
| | | <el-radio-group v-model="form.doorIds"> |
| | | <el-radio :label="3">预约免登记</el-radio> |
| | | <el-radio :label="6">预约后登记(需要配备访客机)</el-radio> |
| | | <el-form-item label="来访预约方式:" prop="reservationWay"> |
| | | <el-radio-group v-model="form.reservationWay"> |
| | | <el-radio :label="0">预约免登记</el-radio> |
| | | <el-radio :label="1">预约后登记(需要配备访客机)</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="被访人校验方式:" prop="doorIds"> |
| | | <el-radio-group v-model="form.doorIds"> |
| | | <el-radio :label="3">仅手机号</el-radio> |
| | | <el-radio :label="6">手机号&姓名</el-radio> |
| | | <el-form-item label="被访人校验方式:" prop="checkVisit"> |
| | | <el-radio-group v-model="form.checkVisit"> |
| | | <el-radio :label="0">仅手机号</el-radio> |
| | | <el-radio :label="1">手机号&姓名</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="健康证是否必填:" prop="doorIds"> |
| | | <el-radio-group v-model="form.doorIds"> |
| | | <el-radio :label="3">否</el-radio> |
| | | <el-radio :label="6">是</el-radio> |
| | | <el-form-item label="健康证是否必填:" prop="healthCard"> |
| | | <el-radio-group v-model="form.healthCard"> |
| | | <el-radio :label="0">否</el-radio> |
| | | <el-radio :label="1">是</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="访客是否答题:" prop="doorIds"> |
| | | <el-form-item label="访客是否答题:" prop="isAnswer"> |
| | | <el-switch |
| | | v-model="form.doorIds" |
| | | v-model="form.isAnswer" |
| | | active-color="#13ce66" |
| | | inactive-color="#ff4949" |
| | | :active-value="1" |
| | | :inactive-value="0"> |
| | | </el-switch> |
| | | </el-form-item> |
| | | <el-form-item label="访客答题主题:" prop="doorIds"> |
| | | <el-input style="width: 50%;" v-model="form.doorIds" placeholder="请输入答题标题" v-trim/> |
| | | <el-form-item label="访客答题主题:" prop="theme"> |
| | | <el-input style="width: 50%;" v-model="form.theme" placeholder="请输入答题标题" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item label="访客答题说明:" prop="doorIds"> |
| | | <el-input style="width: 50%;" type="textarea" v-model="form.doorIds" placeholder="请输入" v-trim/> |
| | | <el-form-item label="访客答题说明:" prop="description"> |
| | | <el-input style="width: 50%;" type="textarea" v-model="form.description" placeholder="请输入" v-trim/> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary">保存配置项</el-button> |
| | | <el-button type="primary" @click="submit">保存配置项</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getVisitConfigDTO, updateVisitConfig } from '@/api/system/common' |
| | | export default { |
| | | name: 'visitorSources', |
| | | |
| | | data() { |
| | | return { |
| | | form: { |
| | | doorIds: '' |
| | | id: null, |
| | | checkVisit: 0, |
| | | reservationWay: 0, |
| | | healthCard: 0, |
| | | isAnswer: 0, |
| | | theme: '', |
| | | description: '' |
| | | } |
| | | } |
| | | }, |
| | | |
| | | created () { |
| | | this.getData() |
| | | }, |
| | | |
| | | methods: { |
| | | getData () { |
| | | getVisitConfigDTO({}) |
| | | .then(res => { |
| | | this.form.id = res.id |
| | | this.form.checkVisit = res.VisitConfigParam.checkVisit |
| | | this.form.description = res.description |
| | | this.form.healthCard = res.VisitConfigParam.healthCard |
| | | this.form.isAnswer = res.VisitConfigParam.isAnswer |
| | | this.form.reservationWay = res.VisitConfigParam.reservationWay |
| | | this.form.theme = res.theme |
| | | }) |
| | | }, |
| | | submit () { |
| | | updateVisitConfig({ |
| | | VisitConfigParam: { |
| | | isAnswer: this.form.isAnswer, |
| | | healthCard: this.form.healthCard, |
| | | checkVisit: this.form.checkVisit, |
| | | reservationWay: this.form.reservationWay |
| | | }, |
| | | description: this.form.description, |
| | | theme: this.form.theme |
| | | }).then(res => { |
| | | this.$message.success('保存成功') |
| | | this.getData() |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | // 192.168.0.110:10013 192.168.0.110:10013 |
| | | // http://192.168.0.101:10013 |
| | | // http://192.168.0.132:10013 |
| | | target: 'http://192.168.0.108:10013', |
| | | target: 'http://192.168.0.132:10013', |
| | | changeOrigin: true, |
| | | pathRewrite: { |
| | | [`^${[process.env.VUE_APP_API_PREFIX]}`]: '' |
| | |
| | | |
| | | import com.doumee.api.BaseController; |
| | | import com.doumee.core.annotation.pr.PreventRepeat; |
| | | import com.doumee.core.erp.model.openapi.request.erp.OrgListRequest; |
| | | import com.doumee.core.erp.model.openapi.request.erp.UserFailRequest; |
| | | import com.doumee.core.erp.model.openapi.request.erp.UserListRequest; |
| | | import com.doumee.core.haikang.model.param.request.AcsDeviceListRequest; |
| | | import com.doumee.core.haikang.model.param.request.ParkListRequest; |
| | | import com.doumee.core.model.ApiResponse; |
| | | import com.doumee.service.business.ERPSyncService; |
| | | import com.doumee.service.business.impl.hksync.HkSyncDeviceServiceImpl; |
| | | import com.doumee.service.business.impl.hksync.HkSyncParkServiceImpl; |
| | | import com.doumee.service.business.impl.hksync.HkSyncPrivilegeServiceImpl; |
| | |
| | | @RestController |
| | | @RequestMapping("/business/erpsync") |
| | | public class ERPSyncController extends BaseController { |
| | | |
| | | @Autowired |
| | | private HkSyncDeviceServiceImpl hkSyncDeviceService; |
| | | @Autowired |
| | | private HkSyncParkServiceImpl hkSyncParkService; |
| | | @Autowired |
| | | private HkSyncPrivilegeServiceImpl hkSyncPrivilegeService; |
| | | private ERPSyncService erpSyncService; |
| | | |
| | | @PreventRepeat |
| | | @ApiOperation("【ERP】全量同步门禁设备接口") |
| | | @PostMapping("/syncDevices") |
| | | //@RequiresPermissions("business:erpsync:device") |
| | | public ApiResponse getDevices(@RequestBody AcsDeviceListRequest param) { |
| | | String result = hkSyncDeviceService.syncHkDevices(param); |
| | | @ApiOperation("【ERP】全量同步ERP组织接口") |
| | | @PostMapping("/getCompanies") |
| | | //@RequiresPermissions("business:erpsync:company") |
| | | public ApiResponse getCompanies(@RequestBody OrgListRequest param) { |
| | | String result = erpSyncService.syncCompany(param); |
| | | return ApiResponse.success(result); |
| | | } |
| | | @PreventRepeat |
| | | @ApiOperation("【海康】全量同步停车库接口") |
| | | @PostMapping("/getParks") |
| | | // @RequiresPermissions("business:hksync:park") |
| | | public ApiResponse getParks(@RequestBody ParkListRequest param) { |
| | | String result = hkSyncParkService.syncHkParks(param); |
| | | return ApiResponse.success(result); |
| | | } |
| | | @PreventRepeat |
| | | @ApiOperation("【海康】全量同步停车库接口") |
| | | @PostMapping("/getPrivilege") |
| | | // @RequiresPermissions("business:hksync:privilege") |
| | | public ApiResponse getPrivilege(@RequestBody ParkListRequest param) { |
| | | String result = hkSyncPrivilegeService.syncHkParks(param); |
| | | @ApiOperation("【ERP】全量同步ERP人员接口") |
| | | @PostMapping("/getUsers") |
| | | // @RequiresPermissions("business:erpsync:users") |
| | | public ApiResponse getUsers(@RequestBody UserListRequest param) { |
| | | String result = erpSyncService.syncUsers(param); |
| | | return ApiResponse.success(result); |
| | | } |
| | | } |
| | |
| | | @ApiOperation("人员移除/解冻") |
| | | @PostMapping("/updateRemoveStatusById") |
| | | @RequiresPermissions("business:member:update") |
| | | public ApiResponse updateRemoveStatusById(@RequestParam List<Member> list){ |
| | | public ApiResponse updateRemoveStatusById(@RequestBody List<Member> list){ |
| | | if(list.size()>0){ |
| | | memberService.updateRemoveStatusById(list); |
| | | return ApiResponse.success(null); |
| | | }else{ |
| | | return ApiResponse.failed("参数错误"); |
| | | } |
| | | |
| | | } |
| | | |
| | | @ApiOperation("人员拉黑/冻结") |
| | |
| | | |
| | | @ApiOperation("滞留人员") |
| | | @PostMapping("/retentionPage") |
| | | // @RequiresPermissions("business:visits:query") |
| | | @RequiresPermissions("business:visits:query") |
| | | public ApiResponse<PageData<Visits>> retentionPage (@RequestBody PageWrap<Visits> pageWrap) { |
| | | return ApiResponse.success(visitsService.retentionPage(pageWrap)); |
| | | } |
| | |
| | | |
| | | |
| | | |
| | | @ApiOperation("分页查询系统用户") |
| | | |
| | | |
| | | @ApiOperation("查询所有系统用户") |
| | | @PostMapping("/findAllList") |
| | | @RequiresPermissions("system:user:query") |
| | | public ApiResponse<PageData<SystemUser>> findAllList (@RequestBody PageWrap<SystemUser> pageWrap) { |
| | | public ApiResponse<List<SystemUser>> findAllList (@RequestBody SystemUser pageWrap) { |
| | | return ApiResponse.success(systemUserService.findAllList(pageWrap)); |
| | | } |
| | | |
| | |
| | | |
| | | import com.doumee.biz.system.SystemDictDataBiz; |
| | | import com.doumee.core.haikang.model.HKConstants; |
| | | import com.doumee.core.haikang.model.HKTools; |
| | | import com.doumee.core.haikang.model.param.BaseResponse; |
| | | import com.doumee.core.haikang.model.param.request.EventSubRequest; |
| | | import com.doumee.core.haikang.model.param.respose.OrgListResponse; |
| | | import com.doumee.core.haikang.service.HKService; |
| | | import com.doumee.core.utils.Constants; |
| | | import com.doumee.dao.system.model.SystemDictData; |
| | | import com.doumee.service.business.InterfaceLogService; |
| | | import com.doumee.service.business.impl.hksync.HkSyncBaseServiceImpl; |
| | | import com.hikvision.artemis.sdk.config.ArtemisConfig; |
| | | import org.apache.commons.lang3.StringUtils; |
| | |
| | | |
| | | @Autowired |
| | | private SystemDictDataBiz systemDictDataBiz; |
| | | @Autowired |
| | | private InterfaceLogService interfaceLogService; |
| | | |
| | | @PostConstruct |
| | | public int initHkConfig(){ |
| | |
| | | ArtemisConfig.appSecret = systemDictDataBiz.queryByCode(Constants.HK_PARAM, Constants.HK_APPSECRET).getCode(); |
| | | HKConstants.https = systemDictDataBiz.queryByCode(Constants.HK_PARAM, Constants.HK_HTTPS).getCode(); |
| | | } |
| | | HKTools.interfaceLogService=interfaceLogService; |
| | | //获取根组织编码 |
| | | getRootOrgCode(); |
| | | //开始订阅门禁事件、访客事件、和停车场事件 |
| | |
| | | package com.doumee.task; |
| | | |
| | | |
| | | import com.doumee.service.business.MemberService; |
| | | import com.doumee.service.business.impl.hksync.HkSyncEmpowerServiceImpl; |
| | | import com.doumee.service.business.impl.hksync.HkSyncImgServiceImpl; |
| | | import com.doumee.service.business.impl.hksync.HkSyncOrgUserServiceImpl; |
| | |
| | | private HkSyncOrgUserServiceImpl hkSyncOrgUserService; |
| | | @Autowired |
| | | private HkSyncVisitServiceImpl hkSyncVisitService; |
| | | @Autowired |
| | | private MemberService memberService; |
| | | /** |
| | | * 是否开发者 |
| | | */ |
| | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 定时冻结内部人员 |
| | | */ |
| | | @Scheduled(fixedDelay= 60*1000) |
| | | public void memberFreeze() { |
| | | memberService.memberFreeze(); |
| | | } |
| | | |
| | | } |
| | |
| | | import com.doumee.core.erp.model.openapi.response.erp.ERPApiResponse; |
| | | import com.doumee.core.erp.model.openapi.response.erp.ErpOrgListResponse; |
| | | import com.doumee.core.erp.model.openapi.response.erp.ErpUserListResponse; |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.core.utils.HttpsUtil; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.github.pagehelper.PageInfo; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | public class ErpTool { |
| | |
| | | * @return |
| | | */ |
| | | public static List<ErpOrgListResponse> getErpOrgList(String url, OrgListRequest param){ |
| | | String result = HttpsUtil.postJson(url, JSONObject.toJSONString(param)); |
| | | |
| | | List<ErpOrgListResponse> list = new ArrayList<>(); |
| | | int page =1; |
| | | int pageSize = 100; |
| | | boolean hasLast = true; |
| | | while (hasLast){ |
| | | hasLast = false; |
| | | PageWrap<OrgListRequest> pageWrap = new PageWrap<>(); |
| | | pageWrap.setModel(param); |
| | | pageWrap.setPage(page); |
| | | pageWrap.setCapacity(pageSize); |
| | | String result = HttpsUtil.postJson(url, JSONObject.toJSONString(pageWrap)); |
| | | if(StringUtils.isNotBlank(result)){ |
| | | TypeReference typeReference = |
| | | new TypeReference<ERPApiResponse<List<ErpOrgListResponse>>>(){}; |
| | | ERPApiResponse<List<ErpOrgListResponse>> response = JSONObject.parseObject(result, typeReference.getType()); |
| | | if(response!=null){ |
| | | return response.getData(); |
| | | new TypeReference<ERPApiResponse<PageData<ErpOrgListResponse>>>(){}; |
| | | ERPApiResponse<PageData<ErpOrgListResponse>> response = JSONObject.parseObject(result, typeReference.getType()); |
| | | if(response!=null && response.getData()!=null&& response.getData().getRecords()!=null){ |
| | | list.addAll(response.getData().getRecords()); |
| | | if(100*pageSize < response.getData().getTotal() ){ |
| | | hasLast =true;//还有下一页 |
| | | } |
| | | page++; |
| | | } |
| | | } |
| | | return null; |
| | | |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | |
| | | * @return |
| | | */ |
| | | public static List<ErpUserListResponse> getErpUserList(String url, UserListRequest param){ |
| | | String result = HttpsUtil.postJson(url, JSONObject.toJSONString(param)); |
| | | |
| | | List<ErpUserListResponse> list = new ArrayList<>(); |
| | | int page =1; |
| | | int pageSize = 100; |
| | | boolean hasLast = true; |
| | | while (hasLast){ |
| | | hasLast = false; |
| | | PageWrap<UserListRequest> pageWrap = new PageWrap<>(); |
| | | pageWrap.setModel(param); |
| | | pageWrap.setPage(page); |
| | | pageWrap.setCapacity(pageSize); |
| | | String result = HttpsUtil.postJson(url, JSONObject.toJSONString(pageWrap)); |
| | | if(StringUtils.isNotBlank(result)){ |
| | | TypeReference typeReference = |
| | | new TypeReference<ERPApiResponse<List<ErpUserListResponse>>>(){}; |
| | | ERPApiResponse<List<ErpUserListResponse>> response = JSONObject.parseObject(result, typeReference.getType()); |
| | | if(response!=null){ |
| | | return response.getData(); |
| | | new TypeReference<ERPApiResponse<PageData<ErpUserListResponse>>>(){}; |
| | | ERPApiResponse<PageData <ErpUserListResponse>> response = JSONObject.parseObject(result, typeReference.getType()); |
| | | if(response!=null && response.getData()!=null && response.getData().getRecords()!=null){ |
| | | list.addAll(response.getData().getRecords()); |
| | | if(100*pageSize < response.getData().getTotal() ){ |
| | | hasLast =true;//还有下一页 |
| | | } |
| | | page++; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | return list; |
| | | |
| | | } |
| | | |
| | | /** |
| | |
| | | System.out.println(content.toString()); |
| | | |
| | | } |
| | | public static InterfaceLogService interfaceLogService = null; |
| | | private static void saveInterfaceLog(String s, String result,Map<String, String> path) { |
| | | InterfaceLogService bean = SpringContextUtil.getBean(InterfaceLogService.class); |
| | | if(bean !=null){ |
| | | // InterfaceLogService bean = SpringContextUtil.getBean(InterfaceLogService.class); |
| | | if(interfaceLogService !=null){ |
| | | InterfaceLog hkMonitoryLogDO=new InterfaceLog(); |
| | | hkMonitoryLogDO.setType(0); |
| | | hkMonitoryLogDO.setCreateDate(new Date()); |
| | |
| | | hkMonitoryLogDO.setRepose(result); |
| | | hkMonitoryLogDO.setName(path.get(HKConstants.https)); |
| | | hkMonitoryLogDO.setUrl(HKConstants.https + ArtemisConfig.host+path.get(HKConstants.https)); |
| | | bean.create(hkMonitoryLogDO); |
| | | interfaceLogService.create(hkMonitoryLogDO); |
| | | } |
| | | } |
| | | |
| | |
| | | // ERP ACCESS_SECRET |
| | | public static final String ERP_ACCESS_SECRET = "ERP_ACCESS_SECRET"; |
| | | |
| | | // 内部人员冻结配置时间 |
| | | public static final String TIMEOUT_FREEZE = "TIMEOUT_FREEZE"; |
| | | |
| | | // FTP文件服务器资源访问地址 |
| | | |
| | | public static Date getBirthdyByCardNo(String idCard){ |
| | |
| | | import java.io.ByteArrayOutputStream; |
| | | import java.io.InputStream; |
| | | import java.io.OutputStream; |
| | | import java.net.HttpURLConnection; |
| | | import java.net.URL; |
| | | import java.security.KeyManagementException; |
| | | import java.security.NoSuchAlgorithmException; |
| | |
| | | return connection(url, "POST", data, contentType, ignoreSSL); |
| | | } |
| | | public static String postJson(String url, String data) { |
| | | return connection(url, "POST", data, "application/json", false); |
| | | if(url.startsWith("https://")){ |
| | | return connection(url, "POST", data, "application/json", true); |
| | | }else{ |
| | | return connectionHttp(url, "POST", data, "application/json"); |
| | | } |
| | | } |
| | | |
| | | public static String connection(String url,String method,String data,String contentType,boolean ignoreSSL){ |
| | |
| | | } |
| | | return null; |
| | | } |
| | | public static String connectionHttp(String url,String method,String data,String contentType ){ |
| | | HttpURLConnection connection = null; |
| | | try { |
| | | URL _url = new URL(url); |
| | | connection = (HttpURLConnection) _url.openConnection(); |
| | | connection.setRequestMethod(method); |
| | | connection.setDoOutput(true); |
| | | connection.setDoInput(true); |
| | | connection.setUseCaches(false); |
| | | if(contentType != null){ |
| | | connection.setRequestProperty("Content-Type", contentType); |
| | | } |
| | | |
| | | connection.connect(); |
| | | |
| | | if(data != null){ |
| | | OutputStream outputStream = connection.getOutputStream(); |
| | | outputStream.write(data.getBytes("utf-8")); |
| | | outputStream.close(); |
| | | } |
| | | |
| | | int responseCode = connection.getResponseCode(); |
| | | if (responseCode == HttpsURLConnection.HTTP_OK) { |
| | | InputStream is = connection.getInputStream(); |
| | | byte[] b = new byte[4096]; |
| | | ByteArrayOutputStream baos = new ByteArrayOutputStream(b.length); |
| | | int len; |
| | | while ((len = is.read(b)) != -1) { |
| | | baos.write(b, 0, len); |
| | | } |
| | | is.close(); |
| | | return baos.toString("utf-8"); |
| | | } |
| | | return connection.getResponseMessage(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | if(connection != null){ |
| | | connection.disconnect(); |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | public static void main(String[] args) { |
| | |
| | | @ApiModelProperty(value = " 工号员") |
| | | private Integer code; |
| | | |
| | | @ApiModelProperty(value = "操作人员 ") |
| | | private Integer createrId; |
| | | |
| | | } |
| | |
| | | @TableField(exist = false) |
| | | private String createrName; |
| | | |
| | | @ApiModelProperty(value = "下发状态 0待下发 1已下发 2下发成功 3已取消 4下发失败 ", example = "1") |
| | | @ExcelColumn(name="下发状态",index= 8,valueMapping ="0=待下发;1=已下发;2=下发成功;3=已取消;4=下发失败" ) |
| | | @ApiModelProperty(value = "一卡通授权下发状态 0待下发 1任务执行 2下发成功 3已取消 4下发失败 5任务下载已结束 ", example = "1") |
| | | @ExcelColumn(name="下发状态",index= 8,valueMapping ="0=待下发;1=已下发;2=下发成功;3=已取消;4=下发失败;5=任务下载已结束" ) |
| | | private Integer sendStatus; |
| | | |
| | | @ApiModelProperty(value = "下发类型 0实时 1定时 ", example = "1") |
| | |
| | | @TableField(exist = false) |
| | | private Integer timeOut; |
| | | |
| | | @ApiModelProperty(value = "超时状态0未超时,1已超时,2即将超时", example = "1") |
| | | @TableField(exist = false) |
| | | private Integer outStatus; |
| | | |
| | | } |
| | |
| | | |
| | | PageData<MemberInfoDTO> findUnusualPage(PageWrap<MemberQuery> pageWrap); |
| | | |
| | | |
| | | /** |
| | | * 定时冻结内部人员 |
| | | */ |
| | | void memberFreeze(); |
| | | /********************************************公众号接口***********************************************************************/ |
| | | |
| | | |
| | |
| | | import com.doumee.dao.admin.request.LaborMemberDTO; |
| | | import com.doumee.dao.admin.request.MemberQuery; |
| | | import com.doumee.dao.admin.response.MemberInfoDTO; |
| | | import com.doumee.dao.business.MemberMapper; |
| | | import com.doumee.dao.business.TrainTimeMapper; |
| | | import com.doumee.dao.business.*; |
| | | import com.doumee.dao.business.join.MemberJoinMapper; |
| | | import com.doumee.dao.business.join.UserActionJoinMapper; |
| | | import com.doumee.dao.business.model.*; |
| | | import com.doumee.dao.system.model.SystemDictData; |
| | | import com.doumee.dao.system.model.SystemUser; |
| | | import com.doumee.dao.web.reqeust.CheckVisitedDTO; |
| | | import com.doumee.dao.web.response.MemberVO; |
| | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.commons.lang3.time.DateUtils; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.checkerframework.checker.units.qual.A; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.Arrays; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 人员信息表Service实现 |
| | |
| | | @Autowired |
| | | private TrainTimeMapper trainTimeMapper; |
| | | |
| | | @Autowired |
| | | private MemberRoleMapper memberRoleMapper; |
| | | |
| | | @Autowired |
| | | private DeviceRoleMapper deviceRoleMapper; |
| | | |
| | | @Autowired |
| | | private EmpowerMapper empowerMapper; |
| | | |
| | | @Autowired |
| | | private DeviceMapper deviceMapper; |
| | | |
| | | @Autowired |
| | | private SystemDictDataBiz systemDictDataBiz; |
| | |
| | | Member update = new Member(); |
| | | update.setEditDate(new Date()); |
| | | update.setEditor(loginUserInfo.getId()); |
| | | update.setStatus(member.getStatus()); |
| | | update.setStatus(Constants.Status.FREEZE.getValue()); |
| | | update.setId(member.getId()); |
| | | memberMapper.updateById(update); |
| | | |
| | |
| | | userAction.setCreator(loginUserInfo.getId()); |
| | | if(Constants.equalsInteger(result.getType(),Constants.TWO)){ |
| | | userAction.setType(Constants.ONE); |
| | | userAction.setRemark("由【"+loginUserInfo.getUsername()+"】于【操作时间"+new Date()+"】,进行【冻结】"); |
| | | } |
| | | if(Constants.equalsInteger(result.getType(),Constants.ZERO)){ |
| | | userAction.setType(Constants.TWO); |
| | | userAction.setRemark("由【"+loginUserInfo.getUsername()+"】于【操作时间"+new Date()+"】,进行【拉黑】"); |
| | | |
| | | } |
| | | userAction.setMemberId(result.getId()+""); |
| | | userAction.setBeforeStatus(status); |
| | |
| | | Member update = new Member(); |
| | | update.setEditDate(date); |
| | | update.setEditor(loginUserInfo.getId()); |
| | | update.setStatus(s.getStatus()); |
| | | update.setStatus(Constants.Status.ENABLE.getValue()); |
| | | update.setId(s.getId()); |
| | | memberMapper.updateById(update); |
| | | |
| | | //解冻业务 处理用户授权导入记录 |
| | | this.thawMember(result); |
| | | |
| | | UserAction userAction=new UserAction(); |
| | | userAction.setIsdeleted(Constants.ZERO); |
| | |
| | | |
| | | @Override |
| | | public PageData<MemberInfoDTO> findUnusualPage(PageWrap<MemberQuery> pageWrap) { |
| | | |
| | | |
| | | IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); |
| | | MPJLambdaWrapper<Member> queryWrapper = new MPJLambdaWrapper<>(); |
| | | queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId); |
| | | queryWrapper.selectAll(Member.class) |
| | | .selectAs(Company::getName,MemberInfoDTO::getCompanyName) |
| | | .select(" (select ua.CREATE_DATE from user_action ua where ua.MEMBER_ID=t.id and ua.ISDELETED=0 and ua.type=1 order by ua.CREATE_DATE limit 1) as userActionType1") |
| | | .select(" (select su.remark from user_action uac where uac.MEMBER_ID=t.id and uac.ISDELETED=0 and uac.type=1 order by uac.CREATE_DATE limit 1) as creatorName") |
| | | /* .select(" (select count(v.id) from visits v where v.MEMBER_ID=t.id and v.ISDELETED=0) as visitsCount")*/ |
| | | .select(" (select STARTTIME from visits v where v.MEMBER_ID=t.id and v.ISDELETED=0 order by CREATE_DATE limit 1) as visitsLastDate"); |
| | | |
| | | queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getCreaterId()),Member::getEditor,pageWrap.getModel().getCreaterId()); |
| | | queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getType()),Member::getType,pageWrap.getModel().getType()); |
| | | queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getName()),Member::getName,pageWrap.getModel().getName()) |
| | | .like(StringUtils.isNotBlank(pageWrap.getModel().getPhone()),Member::getPhone,pageWrap.getModel().getPhone()) |
| | | .and(StringUtils.isNotBlank(pageWrap.getModel().getKeyWords()),ms->ms.like(Member::getPhone,pageWrap.getModel().getName()) |
| | | .or().like(Member::getName,pageWrap.getModel().getName())) |
| | | .like(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()),Company::getName,pageWrap.getModel().getCompanyName()) |
| | | .like(StringUtils.isNotBlank(pageWrap.getModel().getIdcardNo()),Member::getIdcardNo,pageWrap.getModel().getIdcardNo()) |
| | | .eq(Member::getStatus,Constants.Status.ENABLE) |
| | | .eq(Member::getStatus,Constants.Status.FREEZE.getValue()) |
| | | .eq(Objects.nonNull(pageWrap.getModel().getCode()),Member::getCode,pageWrap.getModel().getCode()) |
| | | .orderByDesc(Member::getCreateDate); |
| | | |
| | |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 用户解冻 添加授权导入记录 |
| | | * @param member |
| | | */ |
| | | public void thawMember(Member member){ |
| | | //用户角色组 |
| | | List<MemberRole> memberRoleList = memberRoleMapper.selectList(new QueryWrapper<MemberRole>().lambda().eq(MemberRole::getMemberId,member.getId())); |
| | | if(CollectionUtils.isNotEmpty(memberRoleList)){ |
| | | List<Integer> roleIds = memberRoleList.stream().map(m->m.getId()).collect(Collectors.toList()); |
| | | //角色组设备权限 |
| | | List<DeviceRole> deviceRoleList= deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda() |
| | | .eq(DeviceRole::getType,Constants.TWO) |
| | | .in(DeviceRole::getId,roleIds)); |
| | | |
| | | if(CollectionUtils.isNotEmpty(deviceRoleList)){ |
| | | String ids = ""; |
| | | List<Integer> r = new ArrayList<>(); |
| | | for (int i = 0; i < deviceRoleList.size(); i++) { |
| | | DeviceRole deviceRole =deviceRoleList.get(i); |
| | | if(i>0){ |
| | | ids += ","; |
| | | } |
| | | Integer id =deviceRole.getId(); |
| | | ids += "["+id+"]"; |
| | | String doorids =deviceRole.getDoorIds(); |
| | | if(StringUtils.isNotBlank(doorids)){ |
| | | String[] ss = doorids.split(","); |
| | | try { |
| | | for(String s :ss){ |
| | | r.add(Integer.parseInt(s)); |
| | | } |
| | | }catch (Exception e){ |
| | | //脏数据不处理 |
| | | } |
| | | } |
| | | } |
| | | |
| | | if(CollectionUtils.isNotEmpty(r)){ |
| | | List<Empower> list = new ArrayList<>(); |
| | | List<Device> deviceList = deviceMapper.selectList(new QueryWrapper<Device>().lambda().in(Device::getId,r)); |
| | | if(deviceList == null || deviceList.size() == 0){ |
| | | return; |
| | | } |
| | | for (Device deviceRole:deviceList) { |
| | | Empower model = new Empower(); |
| | | model.setCreateDate(new Date()); |
| | | model.setMemberId(member.getId()); |
| | | model.setIsdeleted(Constants.ZERO); |
| | | model.setDeviceId(deviceRole.getId()); |
| | | model.setSendStatus(Constants.ZERO); |
| | | model.setSendType(Constants.ZERO); |
| | | list.add(model); |
| | | } |
| | | //导入新增的授权信息 |
| | | empowerMapper.insertBatchSomeColumn(list); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 定时冻结内部人员 |
| | | */ |
| | | @Override |
| | | public void memberFreeze(){ |
| | | SystemDictData systemDictData = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.TIMEOUT_FREEZE); |
| | | if(Objects.isNull(systemDictData)|| |
| | | StringUtils.isBlank(systemDictData.getCode()) |
| | | ){ |
| | | return; |
| | | } |
| | | List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>() |
| | | .lambda().eq(Member::getIsdeleted,Constants.ZERO) |
| | | .eq(Member::getType,Constants.memberType.internal) |
| | | .isNotNull(Member::getHkId) |
| | | .notExists(" SELECT 1 FROM device_event b WHERE b.ext_event_person_no = HK_ID AND TO_DAYS( NOW()) - TO_DAYS( b.CREATE_DATE ) > "+systemDictData.getCode()+" ") |
| | | ); |
| | | if(CollectionUtils.isEmpty(memberList)){ |
| | | return; |
| | | } |
| | | List<Integer> memberIds = memberList.stream().map(m->m.getId()).collect(Collectors.toList()); |
| | | |
| | | //冻结状态 |
| | | memberMapper.update(null,new UpdateWrapper<Member>() |
| | | .lambda().set(Member::getStatus,Constants.TWO) |
| | | .in(Member::getId,memberIds) |
| | | ); |
| | | //处理下发数据 |
| | | empowerMapper.update(null,new UpdateWrapper<Empower>() |
| | | .lambda() |
| | | .set(Empower::getIsdeleted,Constants.ONE) |
| | | .set(Empower::getSendStatus,Constants.ZERO) |
| | | .set(Empower::getEditDate,new Date()) |
| | | .in(Empower::getMemberId,memberIds) |
| | | ); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /********************************************公众号接口***********************************************************************/ |
| | | |
| | | |
| | |
| | | queryWrapper.leftJoin(Member.class,Member::getId,Visits::getReceptMemberId); |
| | | queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId); |
| | | |
| | | queryWrapper.ne(Member::getType,Constants.TWO); |
| | | queryWrapper.eq(Visits::getIsdeleted,Constants.ZERO); |
| | | queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getType()),Visits::getType,pageWrap.getModel().getType()); |
| | | queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getName()),ms->ms.like(Visits::getPhone,pageWrap.getModel().getName()) |
| | |
| | | .eq(Objects.nonNull(pageWrap.getModel().getStatus()),Visits::getStatus,pageWrap.getModel().getStatus()); |
| | | queryWrapper.isNull(Visits::getOutDate); |
| | | queryWrapper.orderByDesc(Visits::getEditDate); |
| | | String code= systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.TIMEOUT_FREEZE).getCode(); |
| | | IPage<Visits> result = visitsJoinMapper.selectJoinPage(page, Visits.class,queryWrapper); |
| | | if(result!=null&&result.getRecords()!=null){ |
| | | result.getRecords().stream().forEach(s ->{ |
| | | if(s.getTimeOut()>=Constants.ZERO){ |
| | | s.setOutStatus(Constants.ONE); |
| | | }else if(s.getTimeOut()<=Integer.valueOf(code)&&s.getTimeOut()>0){ |
| | | s.setOutStatus(Constants.TWO); |
| | | }else{ |
| | | s.setOutStatus(Constants.ZERO); |
| | | } |
| | | |
| | | }); |
| | | } |
| | | |
| | | return PageData.from(result); |
| | | } |
| | |
| | | company.setName(respone.getName()); |
| | | company.setErpId(respone.getId()); |
| | | company.setCreateDate(date); |
| | | company.setType(Constants.ONE); |
| | | company.setCode(respone.getCode()); |
| | | company.setErpParentId(respone.getParentOrgId()); |
| | | company.setErpDate(date); |
| | |
| | | OrgDelRequest request = new OrgDelRequest(); |
| | | request.setIndexCodes( delHkIds.toArray(new String[]{})); |
| | | BaseResponse<List<OrgUpdateFailureResponse>> result = HKService.delBatchOrg(request); |
| | | if(StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){ |
| | | if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){ |
| | | List<String> fIds = new ArrayList<>(); |
| | | if(result.getData()!=null){ |
| | | for(OrgUpdateFailureResponse r : result.getData()){ |
| | |
| | | */ |
| | | PageData<SystemUserListVO> findPage(PageWrap<QuerySystemUserDTO> pageWrap); |
| | | |
| | | PageData<SystemUser> findAllList(PageWrap<SystemUser> pageWrap); |
| | | List<SystemUser> findAllList(SystemUser pageWrap); |
| | | |
| | | /** |
| | | * 条件统计 |
| | |
| | | |
| | | |
| | | @Override |
| | | public PageData<SystemUser> findAllList(PageWrap<SystemUser> pageWrap) { |
| | | public List<SystemUser> findAllList(SystemUser pageWrap) { |
| | | |
| | | IPage<SystemUser> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); |
| | | |
| | | MPJLambdaWrapper<SystemUser> queryWrapper = new MPJLambdaWrapper<>(); |
| | | Utils.MP.blankToNull(pageWrap.getModel()); |
| | | Utils.MP.blankToNull(pageWrap); |
| | | queryWrapper.selectAll(SystemUser.class); |
| | | queryWrapper.eq(SystemUser::getDeleted, Constants.ZERO); |
| | | queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getUsername()),ms->ms.like(SystemUser::getUsername,pageWrap.getModel().getUsername()) |
| | | .or().like(SystemUser::getMobile,pageWrap.getModel().getUsername()) |
| | | .or().like(SystemUser::getRealname,pageWrap.getModel().getUsername()) |
| | | queryWrapper.and(StringUtils.isNotBlank(pageWrap.getUsername()),ms->ms.like(SystemUser::getUsername,pageWrap.getUsername()) |
| | | .or().like(SystemUser::getMobile,pageWrap.getUsername()) |
| | | .or().like(SystemUser::getRealname,pageWrap.getUsername()) |
| | | ); |
| | | queryWrapper.orderByDesc(SystemUser::getCreateTime); |
| | | |
| | | |
| | | |
| | | IPage<SystemUser> result = systemUserJoinMapper.selectJoinPage(page, SystemUser.class, queryWrapper); |
| | | List<SystemUser> result = systemUserJoinMapper.selectJoinList( SystemUser.class, queryWrapper); |
| | | |
| | | return PageData.from(result); |
| | | return result; |
| | | } |
| | | |
| | | |
| | |
| | | List<ErpOrgListResponse> list = new ArrayList<>(); |
| | | String[] ids = new String[]{"","001","002","003"}; |
| | | String[] names = new String[]{"","组织1","组织2","组织3"}; |
| | | for(int i=1;i<=4;i++){ |
| | | for(int i=1;i<4;i++){ |
| | | ErpOrgListResponse r = new ErpOrgListResponse(); |
| | | r.setParentOrgId(ids[i-1]); |
| | | r.setId(ids[i]); |
| | | r.setCreateDate(new Date()); |
| | | r.setCode(UUID.randomUUID().toString()); |
| | | r.setCode(ids[i]); |
| | | r.setStatus(Constants.ZERO); |
| | | r.setName(names[i]); |
| | | list.add(r); |
| | | } |
| | | IPage<ErpOrgListResponse> pageInfo = new Page<>(1,10,3); |
| | | pageInfo.setTotal(3); |
| | | pageInfo.setRecords(list); |
| | | PageData<ErpOrgListResponse> r = PageData.from( pageInfo); |
| | | return ERPApiResponse.success(r); |
| | |
| | | String[] ids = new String[]{"","1001","1002","1003"}; |
| | | String[] names = new String[]{"","人员1","人员2","人员3"}; |
| | | String[] orgs = new String[]{"","001","002","003"}; |
| | | for(int i=1;i<=4;i++){ |
| | | for(int i=1;i<4;i++){ |
| | | ErpUserListResponse r = new ErpUserListResponse(); |
| | | r.setOrgId(orgs[i]); |
| | | r.setId(ids[i]); |
| | | r.setName(names[i-1]); |
| | | r.setCode( ids[i]); |
| | | r.setIsdeleted(Constants.ONE); |
| | | r.setName(names[i]); |
| | | r.setFaceImg("/20223402/"+r.getId()+".png"); |
| | | list.add(r); |
| | | } |
| | | IPage<ErpUserListResponse> pageInfo = new Page<>(1,10,3); |
| | | pageInfo.setRecords(list); |
| | | pageInfo.setTotal(3); |
| | | PageData<ErpUserListResponse> r = PageData.from( pageInfo); |
| | | return ERPApiResponse.success(r); |
| | | } |
| | |
| | | # application: |
| | | # name: doumeemes |
| | | profiles: |
| | | active: test |
| | | active: dev |
| | | |
| | | # JSON返回配置 |
| | | jackson: |