admin/.env.development
@@ -3,7 +3,7 @@ # VUE_APP_API_URL = 'https://atwl.ahzyssl.com/zhyq_interface' VUE_APP_API_URL = 'http://192.168.1.45:10010' VUE_APP_API_URL = 'http://localhost:10010' # VUE_APP_API_URL = 'http://192.168.0.7/system_gateway' admin/src/api/business/device.js
@@ -25,6 +25,9 @@ export function updateById (data) { return request.post('/visitsAdmin/cloudService/business/device/updateById', data) } export function create (data) { return request.post('/visitsAdmin/cloudService/business/device/create', data) } // ä¿®æ¹æ¯å¦é¨ç¦å ¥å£ export function updateEntranceById (data) { @@ -34,3 +37,20 @@ export function setLedContent (data) { return request.post('/visitsAdmin/cloudService/business/hksync/setLedContent', data) } export function sendBobao (data) { return request.post('/visitsAdmin/cloudService/business/hksync/sendBobao', data) } // å é¤ export function deleteById (id) { return request.get(`/visitsAdmin/cloudService/business/device/delete/${id}`) } // æ¹éå é¤ export function deleteByIdInBatch (ids) { return request.get('/visitsAdmin/cloudService/business/device/delete/batch', { params: { ids } }) } admin/src/components/business/OperaDeviceBroadcastWindow.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,61 @@ <template> <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm" > <el-form :model="form" ref="form" :rules="rules"> <el-form-item label="设å¤åç§°" prop="name"> <el-input v-model="form.name" placeholder="请è¾å ¥åç§°" v-trim/> </el-form-item> <el-form-item label="设å¤å¯ä¸ç " prop="hkId"> <el-input v-model="form.hkId" placeholder="请è¾å ¥è®¾å¤å¯ä¸ç " v-trim/> </el-form-item> <el-form-item label="设å¤åºåå·" prop="no"> <el-input v-model="form.no" placeholder="请è¾å ¥åºåå·" v-trim/> </el-form-item> <el-form-item label="æå¨ä½ç½®" prop="regionPathName"> <el-input v-model="form.regionPathName" placeholder="请è¾å ¥æå¨ä½ç½®" v-trim/> </el-form-item> </el-form> </GlobalWindow> </template> <script> import BaseOpera from '@/components/base/BaseOpera' import GlobalWindow from '@/components/common/GlobalWindow' export default { name: 'OperaDeviceBroadcastWindow', extends: BaseOpera, components: { GlobalWindow }, data () { return { // è¡¨åæ°æ® form: { id: null, hkId: '', name: '', regionPathName: '', no: '', type: 4 }, // éªè¯è§å rules: { name: [ { required: true, message: '请è¾å ¥è®¾å¤åç§°' } ], hkId: [ { required: true, message: '请è¾å ¥è®¾å¤å¯ä¸ç ' } ] } } }, created () { this.config({ api: '/business/device', 'field.id': 'id' }) } } </script> admin/src/views/business/deviceBroadcast.vue
@@ -12,8 +12,10 @@ </el-form> <!-- è¡¨æ ¼åå页 --> <template v-slot:table-wrap> <ul class="toolbar"> <li><el-button type="primary" @click="synchronousData">忥</el-button></li> <ul class="toolbar" v-permissions="['business:device:create', 'business:device:delete']"> <li><el-button type="primary" :loading="isWorking.delete" @click="synchronousData">忥</el-button></li> <li><el-button type="primary" @click="$refs.operaDeviceWindow.open('æ°å»ºå¹¿æ')" icon="el-icon-plus" v-permissions="['business:device:create']">æ°å»º</el-button></li> <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:device:delete']">å é¤</el-button></li> </ul> <el-table :height="tableHeightNew" @@ -21,13 +23,26 @@ :data="tableData.list" stripe > <el-table-column type="selection" width="55"></el-table-column> <el-table-column label="åºå·" width="55" fixed><template slot-scope="scope" >{{scope.$index+1}}</template></el-table-column> <el-table-column prop="name" label="åç§°"></el-table-column> <el-table-column prop="hkId" label="å¯ä¸æ è¯" min-width="200"></el-table-column> <el-table-column prop="channelInfo" label="ç±»å"></el-table-column> <el-table-column prop="channelNo" label="设å¤å·"></el-table-column> <el-table-column prop="regionName" label="åºåç¼ç "></el-table-column> <el-table-column prop="hkDate" label="忥æ¶é´"></el-table-column> <el-table-column prop="hkId" label="å¯ä¸æ è¯" ></el-table-column> <el-table-column prop="no" label="åºåå·" ></el-table-column> <el-table-column prop="regionPathName" label="æå¨ä½ç½®"></el-table-column> <el-table-column prop="editDate" label="æè¿æ´æ°æ¶é´"></el-table-column> <el-table-column v-if="containPermissions(['business:devicerole:update', 'business:devicerole:delete'])" label="æä½" align="center" 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:device:update']">ç¼è¾</el-button> <el-button type="text" @click="send(row)" icon="el-icon-edit" v-permissions="['business:device:update']">åéææ¥</el-button> <el-button type="text" class="red" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:device:delete']">å é¤</el-button> </template> </el-table-column> </el-table> <pagination @size-change="handleSizeChange" @@ -36,8 +51,26 @@ > </pagination> </template> <el-dialog :visible.sync="visibleSend" style="z-index: 100000" append-to-body width="50%" height="50%" :title="'åéææ¥-'+ form.name" > <el-form :model="form" ref="form" > <el-form-item label="ææ¥å 容" prop="name" required> <el-input v-model="form.sendInfo" type="textarea" placeholder="请è¾å ¥ææ¥å 容" v-trim/> </el-form-item> </el-form> <template v-slot:footer > <el-button @click="sendBobao()" type="primary" :loading="isWorkSending">确认</el-button> <el-button @click="sendClose()">è¿å</el-button> </template> </el-dialog> <!-- æ°å»º/ä¿®æ¹ --> <OperaDeviceWindow ref="operaDeviceWindow" @success="handlePageChange"/> <OperaDeviceBroadcastWindow ref="operaDeviceWindow" @success="handlePageChange"/> </TableLayout> </template> @@ -45,12 +78,11 @@ import BaseTable from '@/components/base/BaseTable' import TableLayout from '@/layouts/TableLayout' import Pagination from '@/components/common/Pagination' import OperaDeviceWindow from '@/components/business/OperaDeviceWindow' import { syncDevices, updateEntranceById } from '@/api/business/device' import OperaDeviceBroadcastWindow from '@/components/business/OperaDeviceBroadcastWindow' export default { name: 'Device', extends: BaseTable, components: { TableLayout, Pagination, OperaDeviceWindow }, components: { TableLayout, Pagination, OperaDeviceBroadcastWindow }, data () { return { // æç´¢ @@ -61,6 +93,14 @@ online: '', type: 4 }, isWorkSending: false, form: { sendInfo: '', id: '', hkId: '', name: '' }, visibleSend: false, options: [] } }, @@ -74,17 +114,40 @@ this.search() }, methods: { changeManufature(e, row) { updateEntranceById({ id: row.id, isEntrance: e sendBobao () { if(!this.form.sendInfo){ return } this.$dialog.actionConfirm('确认è¿è¡å¹¿æææ¥åï¼','æä½ç¡®è®¤æé') .then(() => { this.isWorkSending = true this.api.sendBobao(this.form) .then(res => { this.$tip.apiSuccess(res || 'ææ¥è¯·æ±æå') this.sendClose() }) .catch(e => { }) .finally(() => { this.isWorkSending = false }) }) .catch(() => {}) }, send (row) { this.visibleSend = true this.form = { sendInfo: '', id: row.id, hkId: row.hkId, name: row.name } }, sendClose () { this.visibleSend = false this.isWorkSending = false this.form = { sendInfo: '', id: '', hkId: '', name: '' } }, synchronousData () { this.$dialog.actionConfirm('æä½ç¡®è®¤æé', 'æ¨ç¡®è®¤åæ¥å ¨é¨ä¿¡æ¯åï¼') .then(() => { this.isWorking.delete = true syncDevices({type: 3}) syncDevices({type: 4}) .then(res => { this.$tip.apiSuccess(res || '忥æå') this.search() server/system_gateway/src/main/resources/bootstrap.yml
@@ -1,6 +1,6 @@ spring: profiles: active: pro active: dev application: name: system_gateway # å®å ¨é ç½® server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/DeviceController.java
ÎļþÒÑɾ³ý server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/DeviceCloudController.java
@@ -36,6 +36,7 @@ @PostMapping("/create") @CloudRequiredPermission("business:device:create") public ApiResponse create(@RequestBody Device device,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){ device.setLoginUserInfo(this.getLoginUser(token)); return ApiResponse.success(deviceService.create(device)); } @@ -43,7 +44,7 @@ @GetMapping("/delete/{id}") @CloudRequiredPermission("business:device:delete") public ApiResponse deleteById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){ deviceService.deleteById(id); deviceService.deleteById(id,this.getLoginUser(token)); return ApiResponse.success(null); } @ApiOperation("ä¿®æ¹æ¯å¦é¨ç¦å ¥å£") @@ -67,7 +68,7 @@ for (String id : idArray) { idList.add(Integer.valueOf(id)); } deviceService.deleteByIdInBatch(idList); deviceService.deleteByIdInBatch(idList,this.getLoginUser(token)); return ApiResponse.success(null); } @@ -75,6 +76,8 @@ @PostMapping("/updateById") @CloudRequiredPermission("business:device:update") public ApiResponse updateById(@RequestBody Device device,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){ device.setLoginUserInfo(this.getLoginUser(token)); deviceService.updateById(device); return ApiResponse.success(null); } server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java
@@ -354,5 +354,11 @@ deviceService.setLedContent(body); return ApiResponse.success(null); } @ApiOperation("ãæµ·åº·ãå¹¿æææ¥") @PostMapping("/sendBobao") public ApiResponse<List<Map<String,Object>>> setBroadcaseBobao(@RequestBody Device body , HttpServletResponse response) { deviceService.setBroadcaseBobao(body); return ApiResponse.success(null); } } server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
@@ -467,7 +467,6 @@ return result; } public static String startDoPostStringArtemis(String[] pathStr,Map<String, String> querys,Map<String, String> header,String body){ Map<String, String> path = getPath(pathStr[0]); header.put("tagId","frs"); server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Device.java
@@ -1,5 +1,6 @@ package com.doumee.dao.business.model; import com.baomidou.mybatisplus.annotation.TableField; import com.doumee.core.annotation.excel.ExcelColumn; import com.doumee.service.business.third.model.LoginUserModel; import io.swagger.annotations.ApiModel; @@ -155,8 +156,9 @@ private String doorName; @ApiModelProperty(value = "ææ¥å 容") @TableField(exist = false) private String sendInfo; server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Empower.java
@@ -59,7 +59,6 @@ @ApiModelProperty(value = "å¯¼å ¥å¤æ³¨") private String importInfo; @ApiModelProperty(value = "ä¸å人å", example = "1") private Integer sendUserId; @ApiModelProperty(value = "ä¸å次æ°", example = "1") server/visits/dmvisit_service/src/main/java/com/doumee/service/business/DeviceService.java
@@ -1,6 +1,7 @@ package com.doumee.service.business; import com.doumee.core.haikang.model.param.request.TransparentChannelSingleRequest; import com.doumee.service.business.third.model.LoginUserInfo; import com.doumee.service.business.third.model.PageData; import com.doumee.service.business.third.model.PageWrap; import com.doumee.dao.business.model.Device; @@ -26,7 +27,7 @@ * * @param id ä¸»é® */ void deleteById(Integer id); void deleteById(Integer id, LoginUserInfo userInfo); /** * å é¤ @@ -40,7 +41,7 @@ * * @param ids 主é®é */ void deleteByIdInBatch(List<Integer> ids); void deleteByIdInBatch(List<Integer> ids, LoginUserInfo userInfo); /** * 䏻鮿´æ° @@ -105,4 +106,6 @@ void setLedContent(TransparentChannelSingleRequest body); void allLedDefualtContent(); void setBroadcaseBobao(Device body); } server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java
@@ -1,12 +1,18 @@ package com.doumee.service.business.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.haikang.model.HKConstants; import com.doumee.core.haikang.model.param.BaseResponse; import com.doumee.core.haikang.model.param.request.CustomBroadcastRequest; import com.doumee.core.haikang.model.param.request.TransparentChannelSingleRequest; import com.doumee.core.haikang.service.HKService; import com.doumee.dao.business.*; import com.doumee.dao.business.model.*; import com.doumee.service.business.third.model.LoginUserInfo; import com.doumee.service.business.third.model.PageData; import com.doumee.service.business.third.model.PageWrap; import com.doumee.core.utils.Constants; @@ -49,14 +55,24 @@ @Override public Integer create(Device device) { deviceMapper.insert(device); return device.getId(); public Integer create(Device model) { model.setCreator(model.getLoginUserInfo().getId()+""); model.setEdirot(model.getCreator()); model.setIsdeleted(Constants.ZERO); model.setEditDate(new Date()); model.setCreateDate(model.getEditDate()); deviceMapper.insert(model); return model.getId(); } @Override public void deleteById(Integer id) { deviceMapper.deleteById(id); public void deleteById(Integer id, LoginUserInfo userInfo) { Device update = new Device(); update.setEdirot(userInfo.getId()+""); update.setEditDate(new Date()); update.setIsdeleted(Constants.ONE); update.setId(id); deviceMapper.updateById(update); } @Override @@ -66,15 +82,19 @@ } @Override public void deleteByIdInBatch(List<Integer> ids) { public void deleteByIdInBatch(List<Integer> ids, LoginUserInfo userInfo) { if (CollectionUtils.isEmpty(ids)) { return; } deviceMapper.deleteBatchIds(ids); for(Integer id :ids){ deleteById(id,userInfo); } } @Override public void updateById(Device device) { device.setEdirot(device.getLoginUserInfo().getId()+""); device.setEditDate(new Date()); deviceMapper.updateById(device); } @@ -232,6 +252,22 @@ } @Override public void setBroadcaseBobao(Device model){ List<String> ids = new ArrayList<>(); ids.add(model.getHkId()); CustomBroadcastRequest request = new CustomBroadcastRequest(); request.setAudioPointIndexCode(ids); request.setPlayDuration(15);//åä½ç§ request.setBroadCastMode("tts"); request.setPriority(1); request.setState(1);//ææ¾/忢æ è¯ 1-ææ¾ï¼0-忢 request.setPlayTtsContent(model.getSendInfo()); BaseResponse response = HKService.customBroadcast(request); if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"åé失败ï¼"+ JSONObject.toJSONString(response)); } } @Override public void setLedContent(TransparentChannelSingleRequest model) { Device device = findById(model.getDeviceId()); if(device == null