From dc5b54657495c06234bb4332af0ca40c5c0b8b18 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期一, 02 九月 2024 10:11:12 +0800
Subject: [PATCH] 最新版本

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java |  144 ++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 134 insertions(+), 10 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 09d273b..9cbfcec 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,12 +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.*;
 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;
@@ -28,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;
@@ -69,7 +76,13 @@
     private PlatformMapper platformMapper;
     @Autowired
     private PlatformDeviceMapper platformDeviceMapper;
+    @Autowired
     private PlatformJobMapper platformJobMapper;
+    @Autowired
+    private PlatformWmsDetailMapper platformWmsDetailMapper;
+    @Autowired
+    private PlatformEventMapper platformEventMapper;
+    @Autowired
     private PlatformLogMapper platformLogMapper;
     /**
      * 娴峰悍闂ㄧ浜嬩欢鎺ㄩ��
@@ -844,6 +857,7 @@
             }
             //闂ㄧ浜嬩欢闆嗗悎
             List<EventPlatformCarsInfoRequest> events  = param.getParams().getEvents();
+            List<PlatformEvent> eventList = new ArrayList<>();
             for(EventPlatformCarsInfoRequest request : events){
                 if( request.getData() ==null ||  request.getData().size()==0){
                     continue;
@@ -863,6 +877,7 @@
                     }
                     //鍚勮溅閬撹溅杈嗙姸鎬�
                     for(EventPlatformCarsStatusInfoRequest status : data.getHPVehicleStatus()){
+                        eventList.add(initPlatformEventModel(request,data,status));//灏佽浜嬩欢锛堝凡鏈堝彴閫氶亾涓虹淮搴︼級
                         if(StringUtils.isBlank(status.getPlateNo())){
                             continue;//濡傛灉杞﹁締淇℃伅涓虹┖锛屼笉澶勭悊鐩存帴璺宠繃
                         }
@@ -879,25 +894,39 @@
                             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;//鍏朵粬鐘舵�佷笉澶勭悊锛岃烦杩�
                         }
-                        platformJobMapper.updateById(update);//鏇存柊浣滀笟鐘舵��
                         dealPlatformJobLogBiz(update,status);//璁板綍浣滀笟鏃ュ織
                     }
                     break;//鍙鐞嗙涓�涓暟鎹姸鎬�
                 }
+            }
+            if(eventList.size()>0){
+                //鐢熸垚浜嬩欢
+                platformEventMapper.insert(eventList);
             }
             result = "鎴愬姛";
             log.error("銆愭捣搴锋湀鍙拌溅杈嗙姸鎬佷簨浠舵帹閫併��========鎴愬姛=======");
@@ -910,12 +939,53 @@
         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());
@@ -924,21 +994,27 @@
         log.setObjId(job.getId()+"");
         if(Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.DONE.getKey())){
             //濡傛灉鏄綔涓氬畬鎴�
-//            log.setObjType(Constants.LOg);
+            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.PlatformJobStatus.WORKING.getKey())
-                    .eq(PlatformLog::getJobId,job.getJobId())
+                    .eq(PlatformLog::getObjType,Constants.PlatformJobLogType.WORKING.getKey())
+                    .eq(PlatformLog::getJobId,job.getId())
                     .orderByDesc(PlatformLog::getCreateDate)
-                    .last(" limit 1");
-
+                    .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.setParam1(DateUtil.getDate(lastBeginPlatform.getCreateDate(),"yyyy-MM-dd HH:mm:ss"));
-//            log.setObjType(Constants.Jobl);
+            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);
     }
 
@@ -949,5 +1025,53 @@
      */
     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