From 01a9bdffee1f04561b3b59406cbb7a76474c55f3 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 11 十二月 2025 10:59:59 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/wuhuyancao' into wuhuyancao

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningServiceImpl.java           |   17 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java      |   13 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java            |    3 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceServiceImpl.java            |   27 ++++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java     |  128 +++++++++++++++++++-
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java |   33 ++---
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceActivity.java                           |   18 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningPush.java                     |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ParkBookServiceImpl.java          |    2 
 keyCabinet-android/app/src/main/res/layout/offline_activation_activity.xml                                     |    2 
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/OfflineActivationActivity.java              |   69 +++++++++--
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/DevConfigBean.java                             |   13 ++
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java                           |    7 
 13 files changed, 270 insertions(+), 64 deletions(-)

diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/DevConfigBean.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/DevConfigBean.java
index 2f176a9..97830f9 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/DevConfigBean.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/bean/DevConfigBean.java
@@ -12,8 +12,13 @@
     private String linkPhone;
     //璁惧ID
     private String devId;
+
     //鏄惁鍙岄噸楠岃瘉 0鍚� 1鏄�
     private int doubleAuth;
+
+    //閰掔簿妫�娴嬪紑鍚細0=寮�鍚紱1=鍏抽棴
+    private int  alcoholStatus;
+
     //涓婚敭
     private Integer id;
     //澶囨敞
@@ -113,4 +118,12 @@
     public void setActivateFileUrl(String activateFileUrl) {
         this.activateFileUrl = activateFileUrl;
     }
+
+    public int getAlcoholStatus() {
+        return alcoholStatus;
+    }
+
+    public void setAlcoholStatus(int alcoholStatus) {
+        this.alcoholStatus = alcoholStatus;
+    }
 }
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceActivity.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceActivity.java
index c7ffe76..471c2cd 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceActivity.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/FaceActivity.java
@@ -297,7 +297,14 @@
                 //鍙告満ic鍗℃垚鍔�
                 if(flag==0) {
                     //鍙�
-                    statusFsm(4);
+                    if(MApplication.getConfigBean()!=null&&MApplication.getConfigBean().getAlcoholStatus()==1) {
+                        //闈為厭绮炬娴�
+                        startActivity(KeyCabinetActivity.class);
+                        finish();
+                    }else {
+                        //閰掔簿妫�娴�
+                        statusFsm(4);
+                    }
                 }else {
                     //杩�
                     startActivity(KeyCabinetActivity.class);
@@ -651,7 +658,14 @@
                             MApplication.getLoginBean().setMemberId(Integer.parseInt(user.getUserId()));
                             MApplication.getLoginBean().setAuthType(0);
                             //handler.sendEmptyMessageDelayed(8,0);
-                            EventBus.getDefault().post(new FaceStatusChangeEvent(4));
+                            if(MApplication.getConfigBean()!=null&&MApplication.getConfigBean().getAlcoholStatus()==1) {
+                                //闈為厭绮炬娴�
+                                startActivity(KeyCabinetActivity.class);
+                                finish();
+                            }else {
+                                //閰掔簿妫�娴�
+                                EventBus.getDefault().post(new FaceStatusChangeEvent(4));
+                            }
                         }else if(status==7){
                             //杩�-鍙告満
                             MApplication.getLoginBean().setMemberId(Integer.parseInt(user.getUserId()));
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/OfflineActivationActivity.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/OfflineActivationActivity.java
index 6245db2..4f52855 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/OfflineActivationActivity.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/face/OfflineActivationActivity.java
@@ -2,12 +2,18 @@
 
 import androidx.annotation.Nullable;
 
+import android.app.DownloadManager;
+import android.content.BroadcastReceiver;
 import android.content.ClipboardManager;
 import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.net.Uri;
 import android.os.Bundle;
 import android.os.Environment;
 import android.text.TextUtils;
 import android.view.View;
+import android.widget.Toast;
 
 import com.baidu.idl.main.facesdk.FaceAuth;
 import com.baidu.idl.main.facesdk.callback.Callback;
@@ -68,6 +74,8 @@
 
         getDB().accreditOffBtn.setOnClickListener(this);
         getDB().btnDown.setOnClickListener(this);
+        setupDownloadManager();
+        setupDownloadReceiver();
     }
 
     @Subscribe
@@ -127,19 +135,7 @@
                 }
                 if(!TextUtils.isEmpty(MApplication.getConfigBean().getActivateFileUrl())){
                     isDownLoad = true;
-                    FileUtil.downLoadFile(filePath, MApplication.getConfigBean().getActivateFileUrl(), new FileUtil.DownLoadCallBack() {
-                        @Override
-                        public void sucess() {
-                            ToastView.show(MApplication.mContext,"涓嬭浇鎴愬姛");
-                            isDownLoad = false;
-                        }
-
-                        @Override
-                        public void err(String e) {
-                            ToastView.show(MApplication.mContext,e);
-                            isDownLoad = false;
-                        }
-                    });
+                    startDownload(MApplication.getConfigBean().getActivateFileUrl());
                 }
                 break;
             // 绂荤嚎婵�娲�
@@ -186,5 +182,52 @@
     @Override
     protected void onDestroy() {
         super.onDestroy();
+        if (downloadReceiver != null) {
+            unregisterReceiver(downloadReceiver);
+        }
+    }
+
+    private BroadcastReceiver downloadReceiver;
+    private DownloadManager downloadManager;
+    private long downloadId;
+
+    private void setupDownloadManager() {
+        downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
+    }
+
+
+    private void startDownload(String url) {
+        try {
+            DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
+
+            // 璁剧疆涓嬭浇鍙傛暟
+            request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE);
+            request.setTitle("鏂囦欢涓嬭浇");
+            request.setDescription("姝e湪涓嬭浇鏂囦欢...");
+            request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
+            request.setDestinationInExternalPublicDir("", "License.zip");
+
+            // 寮�濮嬩笅杞�
+            downloadId = downloadManager.enqueue(request);
+            Toast.makeText(mContext, "涓嬭浇宸插紑濮�", Toast.LENGTH_SHORT).show();
+
+        } catch (Exception e) {
+            isDownLoad = false;
+            Toast.makeText(this, "涓嬭浇澶辫触: " + e.getMessage(), Toast.LENGTH_LONG).show();
+        }
+    }
+
+    private void setupDownloadReceiver() {
+        downloadReceiver = new BroadcastReceiver() {
+            @Override
+            public void onReceive (Context context, Intent intent){
+                long id = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);
+                if (id == downloadId) {
+                    isDownLoad = false;
+                    Toast.makeText(context, "鏂囦欢涓嬭浇瀹屾垚", Toast.LENGTH_LONG).show();
+                }
+            }
+        };
+        registerReceiver(downloadReceiver,new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
     }
 }
\ No newline at end of file
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java
index 204cdf4..e4bb3b3 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/ui/main/MainActivity.java
@@ -1305,7 +1305,7 @@
             getVM().addInfo(e.getMsg());
         }
     }
-
+    private long lastCloseDoorTime;
     @Subscribe(threadMode = ThreadMode.MAIN)
     public void CLGridEvent(CLGridEvent e){
         if(!isFinishing()){
@@ -1378,6 +1378,7 @@
                 String open = data.substring(6,8);
                 String key = bh+tdh;
                 CabinetGridDo gridDo = DaoManager.getCabinetGridDao().getGridByKey(key);
+                lastCloseDoorTime = System.currentTimeMillis();
                 if(gridDo!=null){
                     gridDo.setIsOpen("00".equals(open)?1:0);
                     gridDo.setUpdateTime(StringUtil.DateToStr(new Date()));
@@ -1542,10 +1543,10 @@
                     }else {
                         gridDo.setCurKeyCode("");
                     }
-                    if("0101".equals(key)) {
+                    /*if("0101".equals(key)) {
                         getVM().addInfo(key+" , "+isHaveKey+"  "+keyCode);
                         getVM().addInfo(key + "璁剧疆閽ュ寵锛�" + gridDo.getCurKeyCode());
-                    }
+                    }*/
                     gridDo.setUpdateTime(StringUtil.DateToStr(new Date()));
                     updateList.add(gridDo);
                 }
diff --git a/keyCabinet-android/app/src/main/res/layout/offline_activation_activity.xml b/keyCabinet-android/app/src/main/res/layout/offline_activation_activity.xml
index 7cccb3f..30da852 100644
--- a/keyCabinet-android/app/src/main/res/layout/offline_activation_activity.xml
+++ b/keyCabinet-android/app/src/main/res/layout/offline_activation_activity.xml
@@ -191,7 +191,7 @@
                     android:layout_below="@+id/accredit_setTv"
                     android:layout_marginTop="20dp"
                     android:gravity="center"
-                    android:textColor="@color/white" />
+                    android:textColor="@color/black" />
 
                 <View
                     android:id="@+id/aaccredit_view"
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningPush.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningPush.java
index 3a8d5a2..07e6232 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningPush.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WarningPush.java
@@ -90,7 +90,7 @@
     //@ExcelColumn(name="鎺ㄩ�佹椂闂�")
     private Date pushDate;
 
-    @ApiModelProperty(value = "鎺ㄩ�佹柟寮� 0閽夐拤閫氱煡", example = "1")
+    @ApiModelProperty(value = "鎺ㄩ�佹柟寮� 0閽夐拤閫氱煡 1璁惧鎺ㄩ��", example = "1")
     //@ExcelColumn(name="鎺ㄩ�佹柟寮� 0閽夐拤閫氱煡")
     private Integer pushType;
 
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 72f6c8f..d66c345 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
@@ -54,6 +54,8 @@
     private SystemDictDataBiz systemDictDataBiz;
     @Autowired
     private PlatformBroadcastLogMapper platformBroadcastLogMapper;
+    @Autowired
+    private InterfaceLogMapper interfaceLogMapper;
 
 
     @Override
@@ -279,9 +281,9 @@
         String input = "";
 
         model.setSendInfo(param.getSendInfo());
-        return  sendBroadcaseBobaoHttpBiz(model);
+        return  sendBroadcaseBobaoHttpBiz(model,interfaceLogMapper);
     }
-    public static String sendBroadcaseBobaoHttpBiz(Device model){
+    public static String sendBroadcaseBobaoHttpBiz(Device model,InterfaceLogMapper interfaceLogMapper){
         //閲嶆柊涓嬪彂璁″垝
         JSONObject jsonObject = new JSONObject();
         jsonObject.put("command","start");
@@ -298,8 +300,27 @@
         log.error("========娴峰悍骞挎挱鎾斁鍏ュ弬鍐呭 : " + params);
         String result = HttpsUtil.doPutHk(model.getIp(),Integer.parseInt(StringUtils.defaultString(model.getPort(),"80")),model.getDoorId(), model.getDoorName()
                 ,"/ISAPI/AccessControl/EventCardLinkageCfg/TTSAudio?format=json",params);
-
         log.error("========娴峰悍骞挎挱鎾斁杩斿洖鍐呭 : " + result);
+
+        JSONObject resultJson = JSONObject.parseObject(result);
+        Boolean success = false;
+        if(Constants.equalsInteger(resultJson.getInteger("statusCode"),Constants.ONE)){
+            success = true;
+        }
+        InterfaceLog log = new InterfaceLog();
+        log.setCreateDate(new Date());
+        log.setUrl("/ISAPI/AccessControl/EventCardLinkageCfg/TTSAudio?format=json");
+        log.setEditDate(log.getCreateDate());
+        log.setPlat(Constants.ZERO);
+        log.setName("娴峰悍骞挎挱鎾斁");
+        log.setIsdeleted(Constants.ZERO);
+        log.setRequest(params);
+        log.setType(Constants.ZERO);
+        log.setSuccess(success?Constants.ZERO:Constants.ONE);
+        log.setRepose(result);
+        interfaceLogMapper.insert(log);
+
+
         return result;
     }
     @Override
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java
index a14b88a..29b9403 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java
@@ -64,6 +64,12 @@
     private WarningEventMapper warningEventMapper;
 
     @Autowired
+    private DeviceMapper deviceMapper;
+
+    @Autowired
+    private InterfaceLogMapper interfaceLogMapper;
+
+    @Autowired
     private MemberMapper memberMapper;
 
     @Autowired
@@ -698,27 +704,43 @@
                         warningPush.setMemberNames(StringUtils.join(memberList.stream().map(i->i.getName()).collect(Collectors.toList()),",")
                         );
                         //todo 鏆傛椂鍏抽棴 閽夐拤閫氱煡
-
-                        //            Boolean noticeFlag = dingTalk.workInfoOANotice(Long.valueOf(systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.AGENT_ID).getCode()),
-                        //                    StringUtils.join(memberList.stream().filter(i->StringUtils.isNotBlank(i.getDdId())).map(i->i.getDdId()).collect(Collectors.toList()),","),
-                        //                dingTalk.getAlarmNoticeMsg(warningPush.getRegion(),DateUtil.getCurrDateTime(),content));
-                        //            warningPush.setStatus(noticeFlag?Constants.ONE:Constants.TWO);
+                        if(Constants.equalsInteger(warningRule.getMemberNotice(),Constants.ONE)){
+                            //            Boolean noticeFlag = dingTalk.workInfoOANotice(Long.valueOf(systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.AGENT_ID).getCode()),
+                            //                    StringUtils.join(memberList.stream().filter(i->StringUtils.isNotBlank(i.getDdId())).map(i->i.getDdId()).collect(Collectors.toList()),","),
+                            //                      dingTalk.getAlarmNoticeMsg(warningPush.getRegion(),DateUtil.getCurrDateTime(),content));
+                            //            warningPush.setStatus(noticeFlag?Constants.ONE:Constants.TWO);
+                        }
                         warningPushMapper.insert(warningPush);
                         warningEvent.setStatus(Constants.ONE);
                         warningEventMapper.updateById(warningEvent);
+                        this.sendDeviceNotice(warningRule);
                     }catch (Exception e){
                         warningEvent.setStatus(Constants.TWO);
                         warningEventMapper.updateById(warningEvent);
                     }
-
                 }
+            }
+        }
+    }
 
+    public void sendDeviceNotice(WarningRule warningRule){
+        if(Constants.equalsInteger(warningRule.getDeviceNotice(),Constants.ONE)&&StringUtils.isNotBlank(warningRule.getDeviceIds())&&StringUtils.isNotBlank(warningRule.getDeviceNoticeContent())){
+            List<Device> deviceList = deviceMapper.selectList(new QueryWrapper<Device>()
+                    .lambda()
+                    .eq(Device::getStatus,Constants.ZERO)
+                    .eq(Device::getId,Arrays.asList(warningRule.getDeviceIds().split(",")))
+            );
+            if(CollectionUtils.isNotEmpty(deviceList)){
+                for (Device device:deviceList) {
+                    device.setSendInfo(warningRule.getDeviceNoticeContent());
+                    DeviceServiceImpl.sendBroadcaseBobaoHttpBiz(device,interfaceLogMapper);
+                }
             }
         }
     }
 
 
-    public List<Integer> processWarnFront(Constants.WarningConfig warningConfig){
+   /* public List<Integer> processWarnFront(Constants.WarningConfig warningConfig){
         List<WarningRuleDetail> warningRuleDetailList = warningRuleDetailMapper.selectJoinList(WarningRuleDetail.class,new MPJLambdaWrapper<WarningRuleDetail>()
                 .selectAll(WarningRuleDetail.class)
                 .leftJoin(Warning.class,Warning::getId,WarningRuleDetail::getWarningId)
@@ -737,6 +759,9 @@
             List<Integer> resultList = new ArrayList<>();
             for (Integer ruleId:ruleIdSet) {
                 WarningRule warningRule = warningRuleMapper.selectById(ruleId);
+                if(Constants.equalsInteger(warningRule.getMemberNotice(),Constants.ZERO)&&Constants.equalsInteger(warningRule.getDeviceNotice(),Constants.ZERO)){
+                    continue;
+                }
                 //鏌ヨ鍏朵粬瑙勫垯淇℃伅
                 List<WarningRuleDetail> warningRuleDetails = warningRuleDetailMapper.selectJoinList(WarningRuleDetail.class,new MPJLambdaWrapper<WarningRuleDetail>()
                         .selectAll(WarningRuleDetail.class)
@@ -787,6 +812,84 @@
             return resultList;
         }
         return new ArrayList<>();
+
+
+    }*/
+
+    public List<Integer> processWarnFront(Constants.WarningConfig warningConfig){
+
+        List<WarningRuleDetail> warningRuleDetailList = warningRuleDetailMapper.selectJoinList(WarningRuleDetail.class,new MPJLambdaWrapper<WarningRuleDetail>()
+                .selectAll(WarningRuleDetail.class)
+                .leftJoin(Warning.class,Warning::getId,WarningRuleDetail::getWarningId)
+                .eq(WarningRuleDetail::getIsdeleted,Constants.ZERO)
+                .eq(Warning::getIsdeleted,Constants.ZERO)
+                .eq(Warning::getStatus,Constants.ONE)
+                .eq(Warning::getCode,warningConfig.getKey())
+        );
+            if(CollectionUtils.isEmpty(warningRuleDetailList)){
+            return new ArrayList<>();
+        }
+        //鎵�鏈夋姤璀﹁鍒欓厤缃俊鎭�
+        List<Integer> ruleIdList = warningRuleDetailList.stream().map(i->i.getRuleId()).collect(Collectors.toList());;
+        Set<Integer> ruleIdSet = new HashSet<>(ruleIdList);
+            if(CollectionUtils.isNotEmpty(ruleIdSet)){
+            List<Integer> resultList = new ArrayList<>();
+            for (Integer ruleId:ruleIdSet) {
+                WarningRule warningRule = warningRuleMapper.selectById(ruleId);
+                //鏌ヨ鍏朵粬瑙勫垯淇℃伅
+                List<WarningRuleDetail> warningRuleDetails = warningRuleDetailMapper.selectJoinList(WarningRuleDetail.class,new MPJLambdaWrapper<WarningRuleDetail>()
+                        .selectAll(WarningRuleDetail.class)
+                        .selectAs(Warning::getCode,WarningRuleDetail::getCode)
+                        .leftJoin(Warning.class,Warning::getId,WarningRuleDetail::getWarningId)
+                        .eq(WarningRuleDetail::getIsdeleted,Constants.ZERO)
+                        .eq(Warning::getIsdeleted,Constants.ZERO)
+                        .eq(Warning::getStatus,Constants.ONE)
+                        .eq(WarningRuleDetail::getRuleId,ruleId)
+//                        .in(Warning::getCode,Constants.WarningConfig.ALARM_TEST.getKey(),
+//                                Constants.WarningConfig.GRID_TIME_OUT_INFO.getKey(),
+//                                Constants.WarningConfig.KEY_TIME_OUT_BACK.getKey()
+//                        )
+                );
+                //鏃犱换浣曡鍒� 鐩存帴璺宠繃
+                if(CollectionUtils.isEmpty(warningRuleDetails)){
+                    return resultList;
+                }else if(!Constants.equalsInteger(warningRuleDetails.stream().filter(i->!i.getCode().equals(warningConfig.getKey()+"")).collect(Collectors.toList()).size(),Constants.ZERO)){
+                    List<WarningRuleDetail> wList = warningRuleDetails.stream().filter(i->!i.getCode().equals(warningConfig.getKey()+"")).collect(Collectors.toList());
+                    //鑾峰彇鎵�鏈夊叾浠栨墍鏈変簨浠朵富閿俊鎭�
+                    List<Integer> warningIdList = wList.stream().map(i->i.getWarningId()).collect(Collectors.toList());
+                    Set<Integer> setWarningIdList = new HashSet<>(warningIdList);
+                    //鑾峰彇鏃堕棿鍐呮墍鏈変簨浠朵俊鎭�
+                    List<WarningEvent> warningEventList = warningEventMapper.selectList(new QueryWrapper<WarningEvent>().lambda()
+                            .eq(WarningEvent::getIsdeleted,Constants.ZERO)
+                            .in(WarningEvent::getWarningId,setWarningIdList)
+                            .apply(Objects.nonNull(warningRule.getIntervalSec())," DATE_ADD(CREATE_DATE , INTERVAL "+warningRule.getIntervalSec()+" SECOND) > now() ")
+                    );
+                    if(this.processWarnFlag(wList,warningEventList)){
+                        resultList.add(ruleId);
+                    };
+                }else{
+                    List<WarningRuleDetail> wList = warningRuleDetails.stream().filter(i->i.getCode().equals(warningConfig.getKey()+"")).collect(Collectors.toList());
+                    //鑾峰彇鏈浜嬩欢涓婚敭淇℃伅
+                    List<Integer> warningIdList = wList.stream().map(i->i.getWarningId()).collect(Collectors.toList());
+                    Set<Integer> setWarningIdList = new HashSet<>(warningIdList);
+                    if(Objects.isNull(warningRule.getIntervalSec())){
+                        resultList.add(ruleId);
+                    }else{
+                        //鑾峰彇鏃堕棿鍐呮墍鏈変簨浠朵俊鎭�
+                        List<WarningEvent> warningEventList = warningEventMapper.selectList(new QueryWrapper<WarningEvent>().lambda()
+                                .eq(WarningEvent::getIsdeleted,Constants.ZERO)
+                                .in(WarningEvent::getWarningId,setWarningIdList)
+                                .apply(Objects.nonNull(warningRule.getIntervalSec())," DATE_ADD(CREATE_DATE , INTERVAL "+warningRule.getIntervalSec()+" SECOND) > now() ")
+                        );
+                        if(this.processWarnFlag(wList,warningEventList)){
+                            resultList.add(ruleId);
+                        }
+                    }
+                }
+            }
+            return resultList;
+        }
+            return new ArrayList<>();
 
 
     }
@@ -907,13 +1010,16 @@
                     warningPush.setMemberNames(StringUtils.join(memberList.stream().map(i->i.getName()).collect(Collectors.toList()),",")
                     );
                     //todo 鏆傛椂鍏抽棴 閽夐拤閫氱煡
-        //            Boolean noticeFlag = dingTalk.workInfoOANotice(Long.valueOf(systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.AGENT_ID).getCode()),
-        //                    StringUtils.join(memberList.stream().filter(i->StringUtils.isNotBlank(i.getDdId())).map(i->i.getDdId()).collect(Collectors.toList()),","),
-        //                dingTalk.getAlarmNoticeMsg(warningPush.getRegion(),DateUtil.getCurrDateTime(),warningConfig.getInfo()));
-        //            warningPush.setStatus(noticeFlag?Constants.ONE:Constants.TWO);
+                    if(Constants.equalsInteger(warningRule.getMemberNotice(),Constants.ONE)){
+                        //            Boolean noticeFlag = dingTalk.workInfoOANotice(Long.valueOf(systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.AGENT_ID).getCode()),
+                        //                    StringUtils.join(memberList.stream().filter(i->StringUtils.isNotBlank(i.getDdId())).map(i->i.getDdId()).collect(Collectors.toList()),","),
+                        //                dingTalk.getAlarmNoticeMsg(warningPush.getRegion(),DateUtil.getCurrDateTime(),warningConfig.getInfo()));
+//                    warningPush.setStatus(noticeFlag?Constants.ONE:Constants.TWO);
+                    }
                     warningPushMapper.insert(warningPush);
                     warningEvent.setStatus(Constants.ONE);
                     warningEventMapper.updateById(warningEvent);
+                    this.sendDeviceNotice(warningRule);
                 }catch (Exception e){
                     warningEvent.setStatus(Constants.TWO);
                     warningEventMapper.updateById(warningEvent);
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java
index 4dae04a..5597485 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java
@@ -260,11 +260,14 @@
                             );
                             warningPush.setMemberNames(StringUtils.join(memberList.stream().map(i -> i.getName()).collect(Collectors.toList()), ",")
                             );
-                            // todo 鏆傛椂鍏抽棴 閽夐拤閫氱煡
-                            //            Boolean noticeFlag = dingTalk.workInfoOANotice(Long.valueOf(systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.AGENT_ID).getCode()),
-                            //                    StringUtils.join(memberList.stream().filter(i->StringUtils.isNotBlank(i.getDdId())).map(i->i.getDdId()).collect(Collectors.toList()),","),
-                            //                dingTalk.getAlarmNoticeMsg(warningPush.getRegion(),DateUtil.getCurrDateTime(),content));
-                            //            warningPush.setStatus(noticeFlag?Constants.ONE:Constants.TWO);
+
+                            if(Constants.equalsInteger(warningRule.getMemberNotice(),Constants.ONE)){
+                                //            Boolean noticeFlag = dingTalk.workInfoOANotice(Long.valueOf(systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.AGENT_ID).getCode()),
+                                //                    StringUtils.join(memberList.stream().filter(i->StringUtils.isNotBlank(i.getDdId())).map(i->i.getDdId()).collect(Collectors.toList()),","),
+                                //                dingTalk.getAlarmNoticeMsg(warningPush.getRegion(),DateUtil.getCurrDateTime(),warningConfig.getInfo()));
+//                          warningPush.setStatus(noticeFlag?Constants.ONE:Constants.TWO);
+                            }
+                            impl.sendDeviceNotice(warningRule);
                             warningPushMapper.insert(warningPush);
                             falg = true;
                         }catch (Exception e){
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index a9ae43a..7ccca98 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -1549,7 +1549,8 @@
                 .eq(pageWrap.getModel().getHkStatus()!=null,Member::getHkStatus,pageWrap.getModel().getHkStatus())
 
                 .orderByAsc(Company::getSortnum)
-                .orderByAsc(Position::getSortnum);
+                .orderByAsc(Position::getSortnum)
+                .orderByAsc(Member::getId);
 //                .orderByAsc(!Constants.equalsInteger(pageWrap.getModel().getIsdeleted(),Constants.ONE),Member::getPinyin)
 //                .orderByDesc(Constants.equalsInteger(pageWrap.getModel().getIsdeleted(),Constants.ONE),Member::getEditDate);
         if(Constants.formatIntegerNum(dataSyncConfig.getOrgUserDataOrigin())==DataSyncConfig.origin.erp){
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ParkBookServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ParkBookServiceImpl.java
index f371b8f..cb0dc57 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ParkBookServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ParkBookServiceImpl.java
@@ -271,7 +271,7 @@
         queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getCarCode()),ParkBook::getCarCode,pageWrap.getModel().getCarCode());
         queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()),Company::getName,pageWrap.getModel().getCompanyName());
         queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getParksName()),Parks::getName,pageWrap.getModel().getParksName());
-        queryWrapper.orderByDesc(ParkBook::getCreateDate);
+        queryWrapper.orderByDesc(ParkBook::getCreateDate,ParkBook::getId);
 
         IPage<ParkBook> result = parkBookJoinMapper.selectJoinPage(page, ParkBook.class,queryWrapper);
 
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningServiceImpl.java
index 5758472..cdf162f 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningServiceImpl.java
@@ -7,6 +7,8 @@
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.dingTalk.DingTalk;
 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.EventSubRequest;
 import com.doumee.core.haikang.service.HKService;
 import com.doumee.core.utils.Constants;
@@ -294,7 +296,8 @@
         if(Constants.equalsInteger(model.getStatus(),param.getStatus())){
             return;
         }
-        if(StringUtils.isNotBlank(param.getCode())&&Constants.equalsInteger(model.getType(),Constants.ZERO)||Constants.equalsInteger(model.getType(),Constants.ONE)){
+
+        if(StringUtils.isNotBlank(model.getCode())&&(Constants.equalsInteger(model.getType(),Constants.ZERO)||Constants.equalsInteger(model.getType(),Constants.ONE))){
             EventSubRequest eventParam = new EventSubRequest();
             String path =systemDictDataBiz.queryByCode(Constants.HK_PARAM, Constants.HK_PUSH_URL).getCode();
             eventParam.setEventDest(path+"/notice");
@@ -305,11 +308,17 @@
             }
             HKService.cancelEventSub(eventParam);//鍏堝彇娑�
             if(Constants.equalsInteger(param.getStatus(),Constants.ONE)){
-                HKService.eventSub(eventParam);//瀹夐槻浜嬩欢
+                BaseResponse response =  HKService.eventSub(eventParam);//瀹夐槻浜嬩欢
+                if(Objects.nonNull(response)&&StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
+                    model.setSubscribeStatus(Constants.ONE);
+                }else{
+                    model.setSubscribeStatus(Constants.TWO);
+                    model.setSubscribeInfo(response.getMsg());
+                }
+            }else{
+                model.setSubscribeStatus(Constants.ZERO);
             }
         }
-
-
         model.setStatus(param.getStatus());
         model.setEditDate(new Date());
         model.setEditor(param.getLoginUserInfo().getId());
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 4a8c6bb..43142cd 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
@@ -482,7 +482,7 @@
             for(EventBaseInfoRequest request : events){
                 Warning warning = warningMapper.selectOne(new QueryWrapper<Warning>().lambda()
                         .eq(Warning::getIsdeleted,Constants.ZERO)
-                        .eq(Warning::getCode, request.getSrcType()).last("limit 1"));
+                        .eq(Warning::getCode, request.getEventType()).last("limit 1"));
 
                 Constants.WarningConfig warningConfig = Constants.WarningConfig.getConfig(request.getEventType());
                 
@@ -501,12 +501,13 @@
                     warningEvent.setSrcIndex(request.getSrcIndex());
                     warningEvent.setSrcType(request.getSrcType());
                     warningEvent.setSrcName(request.getSrcName());
+                    warningEvent.setWarningId(warning.getId());
                     warningEventMapper.insert(warningEvent);
 
                     if(Objects.nonNull(warningConfig)){
                         List<Integer> ruleIdList =  impl.processWarnFront(warningConfig);
 
-                        Boolean falg = false;
+                        Boolean falg = true;
                         if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ruleIdList)){
                             for (Integer ruleId:ruleIdList) {
                                 WarningRule warningRule = warningRuleMapper.selectById(ruleId);
@@ -537,34 +538,28 @@
                                     );
                                     warningPush.setMemberNames(StringUtils.join(memberList.stream().map(i -> i.getName()).collect(Collectors.toList()), ",")
                                     );
-                                    // todo 鏆傛椂鍏抽棴 閽夐拤閫氱煡
-                                    //            Boolean noticeFlag = dingTalk.workInfoOANotice(Long.valueOf(systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.AGENT_ID).getCode()),
-                                    //                    StringUtils.join(memberList.stream().filter(i->StringUtils.isNotBlank(i.getDdId())).map(i->i.getDdId()).collect(Collectors.toList()),","),
-                                    //                dingTalk.getAlarmNoticeMsg(warningPush.getRegion(),DateUtil.getCurrDateTime(),content));
-                                    //            warningPush.setStatus(noticeFlag?Constants.ONE:Constants.TWO);
+
+                                    if(Constants.equalsInteger(warningRule.getMemberNotice(),Constants.ONE)){
+                                        //            Boolean noticeFlag = dingTalk.workInfoOANotice(Long.valueOf(systemDictDataBiz.queryByCode(Constants.DD_TALK,Constants.AGENT_ID).getCode()),
+                                        //                    StringUtils.join(memberList.stream().filter(i->StringUtils.isNotBlank(i.getDdId())).map(i->i.getDdId()).collect(Collectors.toList()),","),
+                                        //                dingTalk.getAlarmNoticeMsg(warningPush.getRegion(),DateUtil.getCurrDateTime(),warningConfig.getInfo()));
+//                                  warningPush.setStatus(noticeFlag?Constants.ONE:Constants.TWO);
+                                    }
+                                    impl.sendDeviceNotice(warningRule);
                                     warningPushMapper.insert(warningPush);
-                                    falg = true;
+
                                 }catch (Exception e){
+                                    falg = false;
                                     warningEvent.setStatus(Constants.TWO);
                                     warningEventMapper.updateById(warningEvent);
                                 }
                             }
                         }
-                        if(falg){
+                        if(!falg){
                             warningEvent.setStatus(Constants.ONE);
                             warningEventMapper.updateById(warningEvent);
                         }
-
-
-
-
-
-
                     }
-
-
-
-
                 }
 
             }

--
Gitblit v1.9.3