From d941bab56c15b52312c58707ff778f6140e0c5f4 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期三, 11 九月 2024 17:47:41 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmvisit

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java |  306 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 303 insertions(+), 3 deletions(-)

diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
index b190e72..c312ebc 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
@@ -5,13 +5,17 @@
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.doumee.config.DataSyncConfig;
 import com.doumee.config.SpringContextUtil;
+import com.doumee.core.exception.BusinessException;
 import com.doumee.core.haikang.model.HKConstants;
+import com.doumee.core.haikang.model.param.request.CustomBroadcastRequest;
+import com.doumee.core.haikang.model.param.request.TransparentChannelBodyRequest;
+import com.doumee.core.haikang.model.param.request.TransparentChannelHeadRequest;
 import com.doumee.core.haikang.model.param.request.event.acs.EventAcsInfoRequest;
 import com.doumee.core.haikang.model.param.request.event.acs.EventAcsRequest;
 import com.doumee.core.haikang.model.param.request.event.acs.EventDeviceDataRequest;
-import com.doumee.core.haikang.model.param.request.event.parks.EventParkInfoRequest;
-import com.doumee.core.haikang.model.param.request.event.parks.EventParkRequest;
+import com.doumee.core.haikang.model.param.request.event.parks.*;
 import com.doumee.core.haikang.model.param.request.event.visit.*;
+import com.doumee.core.haikang.service.HKService;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.DESUtil;
 import com.doumee.core.utils.DateUtil;
@@ -29,6 +33,8 @@
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.yaml.snakeyaml.scanner.Constant;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
@@ -66,6 +72,18 @@
     private VisitsJoinMapper visitsMapper;
     @Autowired
     private RetentionMapper retentionMapper;
+    @Autowired
+    private PlatformMapper platformMapper;
+    @Autowired
+    private PlatformDeviceMapper platformDeviceMapper;
+    @Autowired
+    private PlatformJobMapper platformJobMapper;
+    @Autowired
+    private PlatformWmsDetailMapper platformWmsDetailMapper;
+    @Autowired
+    private PlatformEventMapper platformEventMapper;
+    @Autowired
+    private PlatformLogMapper platformLogMapper;
     /**
      * 娴峰悍闂ㄧ浜嬩欢鎺ㄩ��
      * @param param
@@ -137,7 +155,7 @@
                         .eq(Device::getIsdeleted,Constants.ZERO)
                         .last("limit 1" ));
                 delRetentionLis.add(member.getId());
-                if(!(Constants.equalsInteger(d.getIsEntrance(),Constants.ONE) && Constants.formatIntegerNum(request.getData().getExtEventInOut()) != Constants.ONE)){
+                if(d!=null && !(Constants.equalsInteger(d.getIsEntrance(),Constants.ONE) && Constants.formatIntegerNum(request.getData().getExtEventInOut()) != Constants.ONE)){
                     //濡傛灉鏄繘闂紝褰曞叆浜哄憳鐨勫湪鍦烘暟鎹褰�
                     retentionList.add(getRetentionModelByRequest(member,request));
                 }
@@ -308,6 +326,7 @@
         return  null;
 
     }
+
     /**
      * 娴峰悍璁垮浜嬩欢鎺ㄩ��
      * @param param
@@ -769,5 +788,286 @@
         interfaceLogMapper.insert(hkMonitoryLogDO);
     }
 
+    /**
+     * 澶勭悊鏈堝彴宸ヤ綔鐘舵�佷簨浠惰闃呭悗鎺ㄩ�佹暟鎹�昏緫閫昏緫
+     * @param param
+     * @param response
+     * @return
+     */
+    @Override
+    public String dealPlatformStatusEvent(EventPlatformRequest param, HttpServletResponse response){
+        log.info("銆愭捣搴锋湀鍙板伐浣滅姸鎬佷簨浠舵帹閫併��========寮�濮�=========锛歕n"+JSONObject.toJSONString(param));
+        String result = null;
+        try {
+            if(param == null || param.getParams() == null || param.getParams().getEvents()==null){
+                return null;
+            }
+            //闂ㄧ浜嬩欢闆嗗悎
+            List<EventPlatformInfoRequest> events  = param.getParams().getEvents();
+            List<Platform> list = new ArrayList<>();
+            for(EventPlatformInfoRequest request : events){
+                EventPlatformDataRequest   data = request.getData();
+                if(data ==null ){
+                    continue;
+                }
+                Integer  workStatus = 0;
+                    if( data.getHPWorkingStatus() ==null ||  data.getHPWorkingStatus().size() ==0){
+                        continue;//濡備綍鎺ㄩ�佺姸鎬侀泦鍚堜负绌猴紝涓嶅鐞嗚烦杩�
+                    }
+                    PlatformDevice model = platformDeviceMapper.selectOne(new QueryWrapper<PlatformDevice>().lambda()
+                            .eq(PlatformDevice::getDeviceId,request.getSrcIndex())
+                            .eq(PlatformDevice::getIsdeleted,Constants.ZERO)
+                            .last("limit 1"));
+                    if(model ==null){
+                        continue;//鐩戞帶鐐规湭鍚屾锛岃烦杩囧鐞�
+                    }
+                    //鍚勮溅閬撹溅杈嗙姸鎬�
+                    for(EventPlatformStatusInfoRequest status : data.getHPWorkingStatus()){
 
+                    }
+            }
+            result = "鎴愬姛";
+            log.error("銆愭捣搴锋湀鍙板伐浣滅姸鎬佷簨浠舵帹閫併��========鎴愬姛=======");
+        }catch (Exception e) {
+            result = "澶辫触"+e.getMessage();
+            log.error("銆愭捣搴锋湀鍙板伐浣滅姸鎬佷簨浠舵帹閫併��========澶辫触=======锛歕n" + e.getMessage());
+        }finally {
+            saveInterfaceLog(param,"/business/hksync/push/platform/workstatus",result,false);//涓嶈鏃ュ織
+        }
+        return  null;
+    }
+    /**
+     * 澶勭悊鏈堝彴杞﹁締鐘舵�佷簨浠惰闃呭悗鎺ㄩ�佹暟鎹�昏緫閫昏緫
+     * @param param
+     * @param response
+     * @return
+     */
+    @Override
+    public  String dealPlatformCarsEvent(EventPlatformCarsRequest param, HttpServletResponse response){
+        log.info("銆愭捣搴锋湀鍙拌溅杈嗙姸鎬佷簨浠舵帹閫併��========寮�濮�=========锛歕n"+JSONObject.toJSONString(param));
+        String result = null;
+        try {
+            if(param == null || param.getParams() == null || param.getParams().getEvents()==null){
+                return null;
+            }
+            //闂ㄧ浜嬩欢闆嗗悎
+            List<EventPlatformCarsInfoRequest> events  = param.getParams().getEvents();
+            List<PlatformEvent> eventList = new ArrayList<>();
+            for(EventPlatformCarsInfoRequest request : events){
+                if( request.getData() ==null ||  request.getData().size()==0){
+                    continue;
+                }
+                Integer  workStatus = 0;
+                for(EventPlatformCarsDataRequest data :  request.getData()){
+                    if( data.getHPVehicleStatus() ==null ||  data.getHPVehicleStatus().size() ==0){
+                        continue;//濡備綍鎺ㄩ�佺姸鎬侀泦鍚堜负绌猴紝涓嶅鐞嗚烦杩�
+                    }
+                    PlatformDevice model = platformDeviceMapper.selectOne(new QueryWrapper<PlatformDevice>().lambda()
+                            .eq(PlatformDevice::getDeviceId,request.getSrcIndex())
+                            .eq(PlatformDevice::getIsdeleted,Constants.ZERO)
+                            .last("limit 1"));
+                    if(model ==null){
+                        continue;//鐩戞帶鐐规湭鍚屾锛岃烦杩囧鐞�
+
+                    }
+                    //鍚勮溅閬撹溅杈嗙姸鎬�
+                    for(EventPlatformCarsStatusInfoRequest status : data.getHPVehicleStatus()){
+                        eventList.add(initPlatformEventModel(request,data,status));//灏佽浜嬩欢锛堝凡鏈堝彴閫氶亾涓虹淮搴︼級
+                        if(StringUtils.isBlank(status.getPlateNo())){
+                            continue;//濡傛灉杞﹁締淇℃伅涓虹┖锛屼笉澶勭悊鐩存帴璺宠繃
+                        }
+                        PlatformJob job = platformJobMapper.selectOne(new QueryWrapper<PlatformJob>().lambda()
+                                .eq(StringUtils.equals(status.getStockStatus(),"front"),PlatformJob::getCarCodeFront,status.getPlateNo() )//鍓嶈溅鐗屽彿
+                                .eq(!StringUtils.equals(status.getStockStatus(),"front"),PlatformJob::getCarCodeBack,status.getPlateNo() )//鍚庤溅鐗屽彿
+                                .eq(PlatformJob::getIsdeleted,Constants.ZERO )
+                                .last("limit 1 "));
+                        PlatformJob update = new PlatformJob();
+                        update.setId(job.getId());
+                        update.setEditDate(new Date());
+                        if(StringUtils.equals(status.getMotionStatus(),"leave")){
+                            //濡傛灉鏄溅杈嗙寮�,涓嶅仛鐩稿叧鑷姩瀹屾垚浣滀笟涓氬姟澶勭悊
+                         /*   if(job ==null && !Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())){
+                                continue;//濡傛灉娌℃煡鍒板搴旂殑浣滀笟鎴栬�呬綔涓氬苟闈炰綔涓氫腑锛屼笉鍋氫笟鍔″鐞�
+                            }
+                            if(Constants.equalsInteger(job.getType(), Constants.THREE) || Constants.equalsInteger(job.getType(), Constants.TWO)){
+                                //濡傛灉鏄痺ms鎺ㄩ�佺殑澶栧崗杞﹁締澶栧崗杞﹁締
+                               if(platformWmsDetailMapper.selectCount(new QueryWrapper<PlatformWmsDetail>().lambda()
+                                       .eq(PlatformWmsDetail::getIsdeleted,Constants.ZERO)
+                                       .eq(PlatformWmsDetail::getJobId,job.getId())
+                                       .ne(PlatformWmsDetail::getLockStatus,Constants.ONE)) >0){
+                                   continue;//濡傛灉澶栧崗浠诲姟浣滀笟锛屽悎鍚屽彿鏈夋湭涓婇攣鐨勬儏鍐碉紝涓嶅仛鑷姩瀹屾垚浣滀笟閫昏緫澶勭悊锛岃烦杩囦笉澶勭悊
+                               }
+                            }
+                            //濡傛灉鏄鍦ㄤ綔涓氱殑鐘舵�侊紝鏍囪浣滀笟宸插畬鎴�
+                            update.setStatus(Constants.PlatformJobStatus.DONE.getKey());//浣滀笟宸插畬鎴�
+                            update.setDoneDate(update.getEditDate());*/
+                        }else  if(StringUtils.equals(status.getMotionStatus(),"enter")){
+                            //濡傛灉鏄溅杈嗚繘鍏�
+                            if(job ==null || !Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.CALLED.getKey())){
+                                //璇存槑杞﹁締杩涢敊鏈堝彴 鎴栬�呰繕鏈彨鍙风姸鎬侊紝鍙戣捣璀﹀憡
+                                dealCarsInErrorPlatformBiz(job,status);
+                            }
+                            if(job.getStartDate() == null){
+                                update.setStartDate(update.getEditDate());
+                            }
+                            update.setStatus(Constants.PlatformJobStatus.WORKING.getKey());//寮�濮嬩綔涓�
+                        }else{
+                            continue;//鍏朵粬鐘舵�佷笉澶勭悊锛岃烦杩�
+                        }
+                        //鏆傛椂涓嶅仛鐩稿叧鑷姩瀹屾垚浣滀笟涓氬姟澶勭悊
+//                        dealPlatformJobLogBiz(update,status);//璁板綍浣滀笟鏃ュ織
+                    }
+                    break;//鍙鐞嗙涓�涓暟鎹姸鎬�
+                }
+            }
+            if(eventList.size()>0){
+                //鐢熸垚浜嬩欢
+                platformEventMapper.insert(eventList);
+            }
+            result = "鎴愬姛";
+            log.error("銆愭捣搴锋湀鍙拌溅杈嗙姸鎬佷簨浠舵帹閫併��========鎴愬姛=======");
+        }catch (Exception e) {
+            result = "澶辫触"+e.getMessage();
+            log.error("銆愭捣搴锋湀鍙拌溅杈嗙姸鎬佷簨浠舵帹閫併��========澶辫触=======锛歕n" + e.getMessage());
+        }finally {
+            saveInterfaceLog(param,"/business/hksync/push/platform/workstatus",result,false);//涓嶈鏃ュ織
+        }
+        return  null;
+    }
+
+    private PlatformEvent initPlatformEventModel(EventPlatformCarsInfoRequest request, EventPlatformCarsDataRequest data, EventPlatformCarsStatusInfoRequest status) {
+        PlatformEvent model = new PlatformEvent();
+        model.setCreateDate(new Date());
+        model.setIsdeleted(Constants.ZERO);
+        model.setEditDate(model.getCreateDate());
+        model.setEventId(request.getEventId());
+//        model.setRemark(JSONObject.toJSONString(request));
+        model.setEventType(request.getEventType());
+        model.setDataEventType(data.getEventType());
+        model.setHappenTime(request.getHappenTime());
+        model.setSrcIndex(request.getSrcIndex());
+        model.setSrcType(request.getSrcType());
+        model.setStatus(request.getStatus());
+        model.setTimeout(request.getTimeout());
+        model.setDateTime(data.getDateTime());
+        model.setDataType(data.getDataType());
+        model.setSendTime(data.getSendTime());
+        model.setIpAddress(data.getIpAddress());
+        model.setIpv6Address(data.getIpv6Address());
+        model.setPortNo(data.getPortNo());
+        model.setMacAddress(data.getMacAddress());
+        model.setProtocol(data.getProtocol());
+        model.setChannelId(data.getChannelID());
+        model.setChannelName(data.getChannelName());
+        model.setEventState(data.getEventState());
+        model.setActivePostCount(data.getActivePostCount());
+        model.setEventDescription(data.getEventDescription());
+        model.setDeviceId(data.getDeviceID());
+        model.setHpno(status.getHPNo());
+        model.setMotionStatus(status.getMotionStatus());
+        model.setPlateNo(status.getPlateNo());
+        model.setVehicleDoorStatus(status.getVehicleDoorStatus());
+        model.setStockStatus(status.getStockStatus());
+        model.setBackgroundImageContent(status.getBackgroundImage()!=null?status.getBackgroundImage().getResourcesContent():null);
+        model.setPlateScore(status.getPlateScore());
+        model.setPlatePictureContent(status.getPlatePicture()!=null?status.getPlatePicture().getResourcesContent():null);
+        return model;
+    }
+
+    /**
+     * 璁板綍鏈堝彴浣滀笟鏃ュ織
+     * @param job
+     * @param status
+     */
+    @Transactional
+    private void dealPlatformJobLogBiz(PlatformJob job,EventPlatformCarsStatusInfoRequest status) {
+        platformJobMapper.updateById(job);//鏇存柊浣滀笟鐘舵��
+        PlatformLog log = new PlatformLog();
+        log.setIsdeleted(Constants.ZERO);
+        log.setCreateDate(new Date());
+        log.setEditDate(log.getCreateDate());
+        log.setJobId(job.getId());
+        log.setObjId(job.getId()+"");
+        if(Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.DONE.getKey())){
+            //濡傛灉鏄綔涓氬畬鎴�
+            log.setObjType(Constants.PlatformJobLogType.DONE.getKey());
+            log.setTitle(Constants.PlatformJobLogType.DONE.getName());
+            log.setContent(Constants.PlatformJobLogType.DONE.getInfo());
+            //鏌ヨ鏈�鍚庝竴娆″紑濮嬩綔涓氱殑鏃ュ織
+            PlatformLog lastBeginPlatform = platformLogMapper.selectOne(new QueryWrapper<PlatformLog>().lambda()
+                    .eq(PlatformLog::getIsdeleted,Constants.ZERO)
+                    .eq(PlatformLog::getObjType,Constants.PlatformJobLogType.WORKING.getKey())
+                    .eq(PlatformLog::getJobId,job.getId())
+                    .orderByDesc(PlatformLog::getCreateDate)
+                    .last(" limit 1"));
+            String v = Long.toString(job.getDoneDate().getTime() - lastBeginPlatform.getCreateDate().getTime() / 1000) ;
+            lastBeginPlatform.setParam3(v);
+            lastBeginPlatform.setParam2(DateUtil.getDate(lastBeginPlatform.getCreateDate(),"yyyy-MM-dd HH:mm:ss"));
+            platformLogMapper.updateById(lastBeginPlatform);//鏇存柊涓婁竴娆′綔涓氱殑瀹屾垚鏃堕棿鍜屼綔涓氭椂闀�
+        }else{
+            //濡傛灉鏄綔涓氫腑
+            log.setObjType(Constants.PlatformJobLogType.WORKING.getKey());
+            log.setTitle(Constants.PlatformJobLogType.WORKING.getName());
+            log.setContent(Constants.PlatformJobLogType.WORKING.getInfo());
+            log.setParam1(DateUtil.getDate(log.getCreateDate(),"yyyy-MM-dd HH:mm:ss"));
+        }
+        platformLogMapper.insert(log);
+    }
+
+    /**
+     * 澶勭悊杞﹁締杩涘叆閿欒鏈堝彴涓氬姟閫昏緫
+     * @param model (鏈堝彴璁惧鍏宠仈淇℃伅锛�
+     * @param status
+     */
+    private void dealCarsInErrorPlatformBiz( PlatformJob model,EventPlatformCarsStatusInfoRequest status) {
+        //TODO-----------------澶勭悊杞﹁締杩涘叆閿欒鏈堝彴涓氬姟閫昏緫
+
+        List<PlatformDevice> deviceList = platformDeviceMapper.selectList(new QueryWrapper<PlatformDevice>().lambda()
+                .eq(PlatformDevice::getPlatformId,model.getPlatformId())
+                .eq(PlatformDevice::getIsdeleted,Constants.ZERO));
+        if(deviceList ==null || deviceList.size() == 0){
+            return;
+        }
+        String content ="杞﹁締"+model.getCarCodeFront()+"鍋滈敊鏈堝彴浜�";
+        List<String> broadcastList = new ArrayList<>();
+        for(PlatformDevice device : deviceList){
+            if(StringUtils.isNotBlank(device.getHkId())){
+                continue;
+            }
+            if(Constants.equalsInteger(device.getType(),Constants.ZERO)){
+                //濡傛灉鏄疞ED
+                TransparentChannelBodyRequest request = new TransparentChannelBodyRequest();
+                TransparentChannelHeadRequest head = new TransparentChannelHeadRequest();
+                head.setAbility("cld");//鍥哄畾鍊�
+                head.setTreatyType("haixuan_led_net");//鍥哄畾鍊�
+                head.setDeviceIndexCode(device.getHkId());
+                request.setMethod("ControlLedGereral");//鍥哄畾鍊�
+                request.setIndexCode(device.getHkId());
+                request.setActionType(0);
+                request.setContent(content);
+                request.setOperationType(219);//鍥哄畾鍊�
+                request.setRegionNo(1);
+                request.setRegionType(14);
+                request.setFontColor(1);
+                request.setCircleTimes(1);//寰幆娆℃暟
+                request.setFontSize(16);//
+                request.setStayTime(1);//鍗曚綅锛燂紵
+                HKService.transparentchannel(head,request);
+            }else  if(Constants.equalsInteger(device.getType(),Constants.ZERO)){
+                //濡傛灉鏄箍鎾偣
+                broadcastList.add(device.getHkId());
+            }
+        }
+        if(broadcastList.size()>0){
+            CustomBroadcastRequest request = new CustomBroadcastRequest();
+            request.setAudioPointIndexCode(broadcastList);
+            request.setPlayDuration(60);//鍗曚綅绉�
+            request.setBroadCastMode("tts");
+            request.setPriority(15);
+            request.setState(1);//鎾斁/鍋滄鏍囪瘑 1-鎾斁锛�0-鍋滄
+            request.setPlayTtsContent(content);
+            HKService.customBroadcast(request);
+        }
+
+    }
 }

--
Gitblit v1.9.3