From f67e78a754fb8d7364d35aaafb0295690a4cc810 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期三, 03 十二月 2025 10:37:06 +0800
Subject: [PATCH] 最新版本541200007

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java |  288 +++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 227 insertions(+), 61 deletions(-)

diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java
index 7d23ade..0415313 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java
@@ -1,5 +1,6 @@
 package com.doumee.service.business.impl;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.doumee.biz.system.SystemDictDataBiz;
@@ -7,28 +8,32 @@
 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.model.param.request.CustomBroadcastRequest;
+import com.doumee.core.haikang.model.param.request.TransparentChannelSingleRequest;
 import com.doumee.core.haikang.service.HKService;
-import com.doumee.core.model.PageData;
-import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.HttpsUtil;
+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;
 import com.doumee.core.utils.Utils;
-import com.doumee.dao.business.DeviceMapper;
-import com.doumee.dao.business.PlatformBroadcastLogMapper;
-import com.doumee.dao.business.model.Device;
-import com.doumee.dao.business.model.PlatformBroadcastLog;
 import com.doumee.service.business.DeviceService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.doumee.service.business.impl.hksync.HkSyncPushServiceImpl;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import lombok.extern.slf4j.Slf4j;
 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.*;
+import java.util.stream.Collectors;
 
 /**
  * 璁惧淇℃伅琛⊿ervice瀹炵幇
@@ -36,10 +41,15 @@
  * @date 2023/11/30 15:33
  */
 @Service
+@Slf4j
 public class DeviceServiceImpl implements DeviceService {
 
     @Autowired
     private DeviceMapper deviceMapper;
+    @Autowired
+    private PlatformMapper platformMapper;
+    @Autowired
+    private PlatformDeviceMapper platformDeviceMapper;
     @Autowired
     private SystemDictDataBiz systemDictDataBiz;
     @Autowired
@@ -47,14 +57,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
@@ -64,15 +84,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);
     }
 
@@ -109,6 +133,7 @@
         wrapper.select(Device::getId, Device::getName, Device::getDoorName,Device::getRegionPathName, Device::getRegionName);
         wrapper.eq(null != param.getType(),Device::getType,param.getType())
                .eq(null !=param.getIsdeleted(),Device::getIsdeleted,param.getIsdeleted())
+               .eq(Objects.isNull(param.getIsdeleted()),Device::getIsdeleted,Constants.ZERO)
                .eq(null != param.getHkStatus(),Device::getHkStatus,param.getHkStatus());
         return deviceMapper.selectList(wrapper);
     }
@@ -229,6 +254,154 @@
     }
 
     @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 String setBroadcaseBobaoHttp(Device param){
+       /* Device model = deviceMapper.selectById(param.getId());
+        if(model ==null && Constants.equalsInteger(param.getType(),Constants.FOUR)){
+            throw  new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        String input = "";
+        JSONObject objext = new JSONObject();
+
+        //閲嶆柊涓嬪彂璁″垝
+        JSONObject jsonObject = new JSONObject();
+        //绗竴灞�
+        JSONArray firstJsonArray = new JSONArray();
+        JSONObject downJson = new JSONObject();
+        downJson.put("terminalID",1);
+        //涓嶅~榛樿瀵规墍鏈夐�氶亾涓嬪彂
+        JSONArray audioJsonArray = new JSONArray();
+        audioJsonArray.add(1);
+        downJson.put("audioOutID",audioJsonArray);
+        firstJsonArray.add(downJson);
+        jsonObject.put("TerminalInfoList",firstJsonArray);
+        //绗竴灞傛暟缁�
+        JSONArray allJsonArray = new JSONArray();
+        //鏁扮粍涓璞�
+        for (WaterTimingBroadcastDO waterTimingBroadcastDO : searchList) {
+            JSONObject downArrayData = new JSONObject();
+            downArrayData.put("audioOutID",audioJsonArray);
+            downArrayData.put("enabled",true);
+            downArrayData.put("planSchemeID",waterTimingBroadcastDO.getName());
+            JSONObject executeJson = new JSONObject();
+            executeJson.put("startTime", getDateStringByZones(waterTimingBroadcastDO.getStartDate()));
+            executeJson.put("stopTime",getDateStringByZones(waterTimingBroadcastDO.getEndDate()));
+            if (Constant.ONE.equals(waterTimingBroadcastDO.getPeriodType())){
+                //鏃ヨ鍒�
+                JSONArray executeJsonArray = new JSONArray();
+                JSONObject executeJsonDataItem = new JSONObject();
+                executeJsonDataItem.put("beginTime",waterTimingBroadcastDO.getStartTime()+"+08:00");
+                executeJsonDataItem.put("endTime",waterTimingBroadcastDO.getEndTime()+"+08:00");
+                executeJsonDataItem.put("playMode","loop");
+                executeJsonDataItem.put("playNowTime","");
+                executeJsonDataItem.put("planSchemeExecID",0);
+                JSONObject secondDownOperationJson = new JSONObject();
+                if (Constant.ONE.equals(waterTimingBroadcastDO.getContentType())){
+                    //鏂囨湰
+                    secondDownOperationJson.put("audioSource","speechSynthesis");
+                    secondDownOperationJson.put("speechSynthesisContent",waterTimingBroadcastDO.getContent());
+                }else if (Constant.TWO.equals(waterTimingBroadcastDO.getContentType())){
+                    //闊抽
+                    secondDownOperationJson.put("audioSource","customAudio");
+                    String json = waterTimingBroadcastDO.getJson();
+                    JSONObject jsonData = JSONObject.parseObject(json);
+                    List<Integer> hkAudioIds = new ArrayList<>();
+                    hkAudioIds.add(jsonData.getIntValue(waterDeviceDO.getIp()));
+                    secondDownOperationJson.put("customAudioID",hkAudioIds);
+                }
+                secondDownOperationJson.put("audioLevel",5);
+                //璇█绫诲瀷
+                secondDownOperationJson.put("TTSLanguageType","chinese");
+                secondDownOperationJson.put("voiceType","female");
+                secondDownOperationJson.put("audioVolume",100);
+                executeJsonDataItem.put("Operation",secondDownOperationJson);
+                executeJsonArray.add(executeJsonDataItem);
+                executeJson.put("dailyScheduleList",executeJsonArray);
+            }else {
+                //鍛ㄨ鍒�
+                JSONArray executeJsonArray = new JSONArray();
+                List<String> executeTime = new ArrayList<>();
+                if (Constant.ONE.equals(waterTimingBroadcastDO.getPeriodType())){
+                    //鏃ヨ鍒� 寰幆涓�娆�
+                    executeTime.add("1");
+                }else if (Constant.TWO.equals(waterTimingBroadcastDO.getPeriodType())){
+                    //鍛ㄨ鍒掑涓�涓懆鍑�
+                    executeTime = Arrays.asList(waterTimingBroadcastDO.getExecuteTime().split(","));
+                }
+                for (String s : executeTime) {
+                    JSONObject executeJsonData = new JSONObject();
+                    if (Constant.TWO.equals(waterTimingBroadcastDO.getPeriodType())){
+                        //鍛ㄨ鍒掑涓�涓懆鍑�
+                        executeJsonData.put("dayOfWeek",Integer.parseInt(s));
+                    }
+                    JSONArray executeJsonDataArray = new JSONArray();
+                    JSONObject executeJsonDataItem = new JSONObject();
+                    executeJsonDataItem.put("beginTime",waterTimingBroadcastDO.getStartTime()+"+08:00");
+                    executeJsonDataItem.put("endTime",waterTimingBroadcastDO.getEndTime()+"+08:00");
+                    executeJsonDataItem.put("playMode","loop");
+                    executeJsonDataItem.put("playNowTime","");
+                    executeJsonDataItem.put("planSchemeExecID",0);
+                    JSONObject secondDownOperationJson = new JSONObject();
+                    if (Constant.ONE.equals(waterTimingBroadcastDO.getContentType())){
+                        //鏂囨湰
+                        secondDownOperationJson.put("audioSource","speechSynthesis");
+                        secondDownOperationJson.put("speechSynthesisContent",waterTimingBroadcastDO.getContent());
+                    }else if (Constant.TWO.equals(waterTimingBroadcastDO.getContentType())){
+                        //闊抽
+                        secondDownOperationJson.put("audioSource","customAudio");
+                        String json = waterTimingBroadcastDO.getJson();
+                        JSONObject jsonData = JSONObject.parseObject(json);
+                        List<Integer> hkAudioIds = new ArrayList<>();
+                        hkAudioIds.add(jsonData.getIntValue(waterDeviceDO.getIp()));
+                        secondDownOperationJson.put("customAudioID",hkAudioIds);
+                    }
+                    secondDownOperationJson.put("audioLevel",5);
+                    //璇█绫诲瀷
+                    secondDownOperationJson.put("TTSLanguageType","chinese");
+                    secondDownOperationJson.put("voiceType","female");
+                    secondDownOperationJson.put("audioVolume",10);
+                    executeJsonDataItem.put("Operation",secondDownOperationJson);
+                    executeJsonDataArray.add(executeJsonDataItem);
+                    executeJsonData.put("scheduleList",executeJsonDataArray);
+                    executeJsonArray.add(executeJsonData);
+
+                }
+                executeJson.put("weeklyScheduleList",executeJsonArray);
+            }
+
+            if (Constant.ONE.equals(waterTimingBroadcastDO.getPeriodType())){
+                //鏃ヨ鍒�
+                downArrayData.put("dailyScheduleInfo",executeJson);
+            }else {
+                //鍛ㄨ鍒�
+                downArrayData.put("weklyScheduleInfo",executeJson);
+            }
+            allJsonArray.add(downArrayData);
+        }
+        jsonObject.put("broadcastPlanSchemeList",allJsonArray);
+        log.info("娴峰悍鎾斁璁″垝涓嬪彂鍏ュ弬鍐呭 : " + jsonObject);
+
+        String result = HttpsUtil.doPostHk(param.getIp(),Integer.parseInt(StringUtils.defaultString(param.getPort(),"80"))
+                ,"/ISAPI/VideoIntercom/broadcast/AddPlanScheme?format=json",param.getDoorId(), param.getDoorName(),jsonObject.toJSONString());
+        return result;*/
+        return  null;
+    }
+    @Override
     public void setLedContent(TransparentChannelSingleRequest model) {
         Device device = findById(model.getDeviceId());
         if(device == null
@@ -236,33 +409,6 @@
                 || !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.getNo());
-        body.setMethod("ControlLedGereral");//鍥哄畾鍊�
-        request.setIndexCode(device.getNo());
-        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(8);
-        body.setParams(request);
-        BaseResponse response =  HKService.transparentchannel(head,body);*/
         if(model.getSpeed()<=0){
             int speed = 13;
             try {
@@ -271,28 +417,48 @@
             }
             model.setSpeed(speed);
         }
-        BaseResponse response =  HkSyncPushServiceImpl.dealLedContentBiz(device.getNo(),model.getContent(),model.getSpeed(),1);
-        PlatformBroadcastLog log = new PlatformBroadcastLog();
-        log.setCreateDate(new Date());
-        log.setBizType(Constants.ONE);
-        log.setHkDate(new Date());
-        log.setDeviceType(Constants.ONE);
-        log.setObjType(Constants.ONE);
-        log.setHkId(device.getHkId());
-        if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
-            log.setHkInfo("璇锋眰澶辫触锛�"+JSONObject.toJSONString(response));
-            log.setHkStatus(Constants.THREE);
-        }else{
-            log.setHkInfo("璇锋眰鎴愬姛");
-            log.setHkStatus(Constants.TWO);
-        }
-        log.setName("璁剧疆LED灞忔樉鍐呭");
-        log.setInfo(model.getContent());
-        log.setNum(Constants.ONE);
+        PlatformBroadcastLog log  =  HkSyncPushServiceImpl.dealLedContentBiz(0,device.getNo(),device.getName(),model.getContent(),model.getSpeed(),1);
         platformBroadcastLogMapper.insert(log);
-        if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
-            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝灞忓箷鍐呭璁剧疆澶辫触"+(response!=null?response.getMsg():""));
+        if(log.getHkStatus() == null || !Constants.equalsInteger(log.getHkStatus(), Constants.TWO)){
+            throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝灞忓箷鍐呭璁剧疆澶辫触"+(log!=null?log.getHkInfo():""));
         }
     }
+    @Override
+    public void allLedDefualtContent() {
+        log.error( "灞忓箷鍐呭璁剧疆=======================寮�濮�========" );
+        int speed = 13;
+        try {
+            speed = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.LED_CONTENT_SPEED).getCode());
+        }catch (Exception e){
+        }
+        //鎵�鏈夋湀鍙板叧鑱旇澶囦俊鎭�
+        List<PlatformDevice> list =  platformDeviceMapper.selectList(new MPJLambdaWrapper<PlatformDevice>().
+                 selectAll(PlatformDevice.class)
+                .selectAs(Platform::getLedContent,PlatformDevice::getLedContent)
+                .leftJoin(Platform.class,Platform::getId,PlatformDevice::getPlatformId)
+                .eq(PlatformDevice::getType,Constants.ZERO)
+                .eq(PlatformDevice::getIsdeleted,Constants.ZERO)
+                .eq(Platform::getIsdeleted,Constants.ZERO)
+        );
+        if(list==null || list.size()==0){
+            return;
+        }
+        for(PlatformDevice device :list){
+            try {
+                String content = device.getLedContent();
+                if(StringUtils.isBlank(content)){
+                    continue;
+                }
+                PlatformBroadcastLog log1  =  HkSyncPushServiceImpl.dealLedContentBiz(0,device.getHkNo(),device.getName(),content,speed,1);
+                platformBroadcastLogMapper.insert(log1);
+                if(log1.getHkStatus() == null || !Constants.equalsInteger(log1.getHkStatus(), Constants.TWO)){
+                    log.error( "瀵逛笉璧凤紝灞忓箷鍐呭璁剧疆澶辫触"+(log1!=null?log1.getHkInfo():""));
+                }
+            }catch (Exception e){
+                log.error( "瀵逛笉璧凤紝灞忓箷鍐呭璁剧疆寮傚父"+ device.getName());
+            }
 
+        }
+        log.error( "灞忓箷鍐呭璁剧疆=======================缁撴潫========" );
+    }
 }

--
Gitblit v1.9.3