liukangdong
2024-09-29 01c13248f347b4bc7091fb70ba92d03676abaa8b
Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmvisit
已添加2个文件
已修改6个文件
164 ■■■■■ 文件已修改
admin/src/api/business/device.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaDeviceLedWindow.vue 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/deviceLed.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/pom.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/TransparentChannelSingleRequest.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/DeviceService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/device.js
@@ -29,3 +29,7 @@
export function updateEntranceById (data) {
  return request.post('/visitsAdmin/cloudService/business/device/updateEntranceById', data)
}
// å‘生led屏内容
export function setLedContent (data) {
  return request.post('/visitsAdmin/cloudService/business/device/setLedContent', data)
}
admin/src/components/business/OperaDeviceLedWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,74 @@
<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="title">
                <el-input v-model="form.title" placeholder="请输入LED屏显示内容" 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: 'OperaDeviceWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      form: {
        id: null,
        title: ''
      },
      // éªŒè¯è§„则
      rules: {
        title: [
          { required: true, message: '请输入LED屏显示内容' }
        ]
      }
    }
  },
  created () {
    this.config({
      api: '/business/device',
      'field.id': 'id'
    })
  },
  methods: {
    confirm () {
      this.$refs.form.validate((valid) => {
        if (!valid) {
          return
        }
        this.confirmDo()
      })
    },
    confirmDo () {
      // è°ƒç”¨æ–°å»ºæŽ¥å£
      this.isWorking = true
      this.api.setLedContent({
        id: this.form.id,
        content: this.form.title
      })
        .then(() => {
          this.visible = false
          this.$tip.apiSuccess('发送成功')
          this.$emit('success')
        })
        .catch(e => {
          // this.$tip.apiFailed(e)
        })
        .finally(() => {
          this.isWorking = false
        })
    }
  }
}
</script>
admin/src/views/business/deviceLed.vue
@@ -41,7 +41,7 @@
            </pagination>
        </template>
        <!-- æ–°å»º/修改 -->
<!--        <OperaDeviceWindow ref="operaDeviceWindow" @success="handlePageChange"/>-->
        <OperaDeviceLedWindow ref="OperaDeviceLedWindow" @success="handlePageChange"/>
    </TableLayout>
</template>
@@ -49,12 +49,12 @@
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaDeviceWindow from '@/components/business/OperaDeviceWindow'
import OperaDeviceLedWindow from '@/components/business/OperaDeviceLedWindow'
import { syncDevices, updateEntranceById } from '@/api/business/device'
export default {
  name: 'Device',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaDeviceWindow },
  components: { TableLayout, Pagination, OperaDeviceLedWindow },
  data () {
    return {
      // æœç´¢
server/visits/dmvisit_admin/pom.xml
@@ -31,7 +31,6 @@
                <directory>src/main/resources</directory>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java
@@ -19,6 +19,7 @@
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DESUtil;
import com.doumee.dao.business.model.Device;
import com.doumee.service.business.DeviceService;
import com.doumee.service.business.impl.hksync.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -31,7 +32,9 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@@ -58,6 +61,8 @@
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private DeviceService deviceService;
    @Autowired
    private RedisTemplate<String,Object> redisTemplate;
@@ -210,4 +215,11 @@
        return ApiResponse.success( url);
    }
    @ApiOperation("【海康】设置LED屏文案")
    @PostMapping("/setLedContent")
    public ApiResponse<List<Map<String,Object>>> setLedContent(@RequestBody TransparentChannelSingleRequest body  , HttpServletResponse response) {
        deviceService.setLedContent(body);
        return ApiResponse.success(null);
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/TransparentChannelSingleRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.doumee.core.haikang.model.param.request;
import lombok.Data;
@Data
public class TransparentChannelSingleRequest {
 /**
  * å‘送消息给LED接口,head头的参数,ability值传参为cld;
  * treatyType值传参为haixuan_led_net;
  * operationType为固定值219,
  * regionNo为1代表第一行,依次类推,不同型号的LED设备支持的行数可能不一样;
  */
 private String content    ; //String    true    å†…容
 private Integer deviceId; //    String    false    è®¾å¤‡ä¸»é”®
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/DeviceService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.doumee.core.haikang.model.param.request.AcsDeviceListRequest;
import com.doumee.core.haikang.model.param.request.TransparentChannelSingleRequest;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.Device;
@@ -104,4 +105,5 @@
     */
    long count(Device device);
    void setLedContent(TransparentChannelSingleRequest body);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java
@@ -1,6 +1,12 @@
package com.doumee.service.business.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.*;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
@@ -12,11 +18,15 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * è®¾å¤‡ä¿¡æ¯è¡¨Service实现
@@ -212,4 +222,44 @@
        return deviceMapper.selectCount(wrapper);
    }
    @Override
    public void setLedContent(TransparentChannelSingleRequest model) {
        Device device = findById(model.getDeviceId());
        if(device == null
                || Constants.equalsInteger(device.getIsdeleted(),Constants.ONE)
                || !Constants.equalsInteger(device.getType(),Constants.TWO)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        TransparentChannelBodyRequest body = new TransparentChannelBodyRequest();
        TransparentChannelHeadRequest head = new TransparentChannelHeadRequest();
        TransparentChannelBodyParamRequest request = new TransparentChannelBodyParamRequest();
        TransparentChannelBodyRegionRequest regions = new TransparentChannelBodyRegionRequest();
        head.setAbility("cld");//固定值
        head.setTreatyType("haixuan_led_net");//固定值
        head.setDeviceIndexCode(device.getHkId());
        body.setMethod("ControlLedGereral");//固定值
        request.setIndexCode(device.getHkId());
        request.setOperationType(219);//固定值
        regions.setActionType(32);
        regions.setContent(model.getContent());
        regions.setRegionNo(1);
        regions.setRegionType(14);
        regions.setFontColor(1);
        regions.setCircleTimes(1);//循环次数
        regions.setFontSize(32);//
        regions.setStayTime(1);//单位??
        regions.setRegionLeftTopXPos(0);
        regions.setRegionLeftTopYPos(0);
        regions.setRegionRightBottomXPos(255);
        regions.setRegionRightBottomYPos(31);
        request.setRegions(new ArrayList<>());
        request.getRegions().add(regions);
        regions.setSpeed(13);
        body.setParams(request);
        BaseResponse response =  HKService.transparentchannel(head,body);
        if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,屏幕内容设置失败"+(response!=null?response.getMsg():""));
        }
    }
}