From 2cfe5c6a0323b82fd4cae92709792047383cf37a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B5=B5=E5=95=B8=E9=9D=9E?= <13281114856@qq.com>
Date: Tue, 28 Feb 2023 17:40:14 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=9A=E5=8A=A1=E4=BF=AE?=
 =?UTF-8?q?=E6=94=B9=E9=80=9A=E7=9F=A5php?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../base/system/message/MessageService.java   |  14 +++
 .../message/impl/MessageServiceImpl.java      |  37 ++++++
 .../xhx/busiz/req/ApiThirdPartyReq.java       |  23 ++++
 .../xhx/busiz/req/BussinessThirdPartyReq.java |  50 ++++++++
 .../xhx/common/code/MessageTypeEnum.java      |  61 +++++++++
 .../xhx/common/code/ThirdPartyStatusEnum.java |  66 ++++++++++
 .../xhx/common/code/ThirdPartyTypeEnum.java   |  65 ++++++++++
 .../mortals/xhx/common/utils/SendTask.java    |  47 +++++++
 .../xhx/common/utils/SendTaskThreadPool.java  |  68 ++++++++++
 .../service/impl/BusinessServiceImpl.java     | 119 +++++++++++++++---
 10 files changed, 535 insertions(+), 15 deletions(-)
 create mode 100644 base-manager/src/main/java/com/mortals/xhx/base/system/message/MessageService.java
 create mode 100644 base-manager/src/main/java/com/mortals/xhx/base/system/message/impl/MessageServiceImpl.java
 create mode 100644 base-manager/src/main/java/com/mortals/xhx/busiz/req/ApiThirdPartyReq.java
 create mode 100644 base-manager/src/main/java/com/mortals/xhx/busiz/req/BussinessThirdPartyReq.java
 create mode 100644 base-manager/src/main/java/com/mortals/xhx/common/code/MessageTypeEnum.java
 create mode 100644 base-manager/src/main/java/com/mortals/xhx/common/code/ThirdPartyStatusEnum.java
 create mode 100644 base-manager/src/main/java/com/mortals/xhx/common/code/ThirdPartyTypeEnum.java
 create mode 100644 base-manager/src/main/java/com/mortals/xhx/common/utils/SendTask.java
 create mode 100644 base-manager/src/main/java/com/mortals/xhx/common/utils/SendTaskThreadPool.java

diff --git a/base-manager/src/main/java/com/mortals/xhx/base/system/message/MessageService.java b/base-manager/src/main/java/com/mortals/xhx/base/system/message/MessageService.java
new file mode 100644
index 00000000..bb580981
--- /dev/null
+++ b/base-manager/src/main/java/com/mortals/xhx/base/system/message/MessageService.java
@@ -0,0 +1,14 @@
+package com.mortals.xhx.base.system.message;
+
+public interface MessageService {
+
+    /**
+     * 鍙戦€佺涓夋柟骞冲彴鍥涗簩鐝€忎紶娑堟伅
+     *
+     * @param sendUrl
+     * @param content
+     * @return
+     */
+    void sendThirdParty(String sendUrl, String content);
+
+}
\ No newline at end of file
diff --git a/base-manager/src/main/java/com/mortals/xhx/base/system/message/impl/MessageServiceImpl.java b/base-manager/src/main/java/com/mortals/xhx/base/system/message/impl/MessageServiceImpl.java
new file mode 100644
index 00000000..b211f62a
--- /dev/null
+++ b/base-manager/src/main/java/com/mortals/xhx/base/system/message/impl/MessageServiceImpl.java
@@ -0,0 +1,37 @@
+package com.mortals.xhx.base.system.message.impl;
+
+import cn.hutool.core.exceptions.ExceptionUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.mortals.framework.service.ICacheService;
+import com.mortals.xhx.base.system.message.MessageService;
+import com.mortals.xhx.common.utils.SendTask;
+import com.mortals.xhx.common.utils.SendTaskThreadPool;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * DeviceService
+ * 璁惧 service瀹炵幇
+ *
+ * @author zxfei
+ * @date 2022-03-09
+ */
+@Service("messageService")
+@Slf4j
+public class MessageServiceImpl implements MessageService {
+
+    @Autowired
+    private SendTaskThreadPool sendTaskThreadPool;
+
+
+    @Override
+    public void sendThirdParty(String sendUrl, String content) {
+        SendTask sendTask = new SendTask(sendUrl, content);
+        sendTaskThreadPool.execute(sendTask);
+    }
+
+    public static void main(String[] args) {
+    }
+}
\ No newline at end of file
diff --git a/base-manager/src/main/java/com/mortals/xhx/busiz/req/ApiThirdPartyReq.java b/base-manager/src/main/java/com/mortals/xhx/busiz/req/ApiThirdPartyReq.java
new file mode 100644
index 00000000..1778e1e9
--- /dev/null
+++ b/base-manager/src/main/java/com/mortals/xhx/busiz/req/ApiThirdPartyReq.java
@@ -0,0 +1,23 @@
+package com.mortals.xhx.busiz.req;
+
+import lombok.Data;
+
+
+@Data
+public class ApiThirdPartyReq<T> {
+    /**
+     * 缁撴灉缂栫爜
+     */
+    private int code;
+    /**
+     * 缁撴灉鎻忚堪
+     */
+    private String msg;
+
+    private Integer type;
+
+
+    private Integer status;
+
+    private T data;
+}
diff --git a/base-manager/src/main/java/com/mortals/xhx/busiz/req/BussinessThirdPartyReq.java b/base-manager/src/main/java/com/mortals/xhx/busiz/req/BussinessThirdPartyReq.java
new file mode 100644
index 00000000..d3e81ac6
--- /dev/null
+++ b/base-manager/src/main/java/com/mortals/xhx/busiz/req/BussinessThirdPartyReq.java
@@ -0,0 +1,50 @@
+package com.mortals.xhx.busiz.req;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+
+/**
+ * 涓氬姟绫�
+ *
+ * @author:
+ * @date: 2022/9/7 14:35
+ */
+@Data
+public class BussinessThirdPartyReq {
+
+    private Long id;
+
+    /**
+     * 涓氬姟鍚嶇О
+     */
+    private String name;
+    /**
+     * 澶囨敞
+     */
+    private String remark;
+    /**
+     * 鏄惁鍏佽棰勭害锛�1.鍏佽锛�0.涓嶅厑璁革級
+     */
+    private Integer canorder;
+    /**
+     * 鏄惁鍏佽鍙栧彿锛�1.鍏佽锛�0.涓嶅厑璁革級
+     */
+    private Integer cantake;
+    /**
+     * 澶у巺鎯呭喌灞曠ず 锛�1.灞曠ず锛�0.涓嶅睍绀猴級
+     */
+    private Integer datashow;
+    /**
+     * 鑻辫涓氬姟鍚�
+     */
+    private String englishname;
+
+    /**
+     * 涓氬姟鐘舵€� (0.鍋滅敤锛�1.姝e父)
+     */
+    private Integer status;
+
+
+
+}
diff --git a/base-manager/src/main/java/com/mortals/xhx/common/code/MessageTypeEnum.java b/base-manager/src/main/java/com/mortals/xhx/common/code/MessageTypeEnum.java
new file mode 100644
index 00000000..994fbac5
--- /dev/null
+++ b/base-manager/src/main/java/com/mortals/xhx/common/code/MessageTypeEnum.java
@@ -0,0 +1,61 @@
+package com.mortals.xhx.common.code;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+
+public enum MessageTypeEnum {
+    CRUD(0, "璁惧澧炲垹鏀规煡"),
+    TRANSACTION(1, "璁惧娑堟伅绫伙紝鏁版嵁鍩熼€忎紶璁惧涓婅娑堟伅浣�");
+    private Integer value;
+    private String desc;
+
+    MessageTypeEnum(Integer value, String desc) {
+        this.value = value;
+        this.desc = desc;
+    }
+
+    public Integer getValue() {
+        return this.value;
+    }
+
+    public String getDesc() {
+        return this.desc;
+    }
+
+    public static MessageTypeEnum getByValue(Integer value) {
+        for (MessageTypeEnum sendMsgTypeEnum : MessageTypeEnum.values()) {
+            if (sendMsgTypeEnum.getValue() == value) {
+                return sendMsgTypeEnum;
+            }
+        }
+        return null;
+    }
+
+    /**
+    * 鑾峰彇Map闆嗗悎
+    *
+    * @param eItem 涓嶅寘鍚」
+    * @return
+    */
+    public static Map<String, String> getEnumMap(Integer... eItem) {
+        Map<String, String> resultMap = new LinkedHashMap<>();
+        for (MessageTypeEnum item : MessageTypeEnum.values()) {
+            try {
+                boolean hasE = false;
+                for (Integer e : eItem) {
+                    if (item.getValue() == e) {
+                        hasE = true;
+                        break;
+                    }
+                }
+                if (!hasE) {
+                    resultMap.put(item.getValue() + "", item.getDesc());
+                }
+            } catch (Exception ex) {
+
+            }
+        }
+        return resultMap;
+    }
+}
\ No newline at end of file
diff --git a/base-manager/src/main/java/com/mortals/xhx/common/code/ThirdPartyStatusEnum.java b/base-manager/src/main/java/com/mortals/xhx/common/code/ThirdPartyStatusEnum.java
new file mode 100644
index 00000000..5c22f720
--- /dev/null
+++ b/base-manager/src/main/java/com/mortals/xhx/common/code/ThirdPartyStatusEnum.java
@@ -0,0 +1,66 @@
+package com.mortals.xhx.common.code;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+* 鍚敤鐘舵€� (0.鍋滄锛�1.鍚敤)鏋氫妇绫�
+*
+* @author zxfei
+*/
+public enum ThirdPartyStatusEnum {
+    鏂板(1, "鏂板"),
+    淇敼(2, "淇敼"),
+    鍒犻櫎(3, "鍒犻櫎");
+    private Integer value;
+    private String desc;
+
+    ThirdPartyStatusEnum(Integer value, String desc) {
+        this.value = value;
+        this.desc = desc;
+    }
+
+    public Integer getValue() {
+        return this.value;
+    }
+
+    public String getDesc() {
+        return this.desc;
+    }
+
+    public static ThirdPartyStatusEnum getByValue(Integer value) {
+        for (ThirdPartyStatusEnum statusEnum : ThirdPartyStatusEnum.values()) {
+            if (statusEnum.getValue() == value) {
+                return statusEnum;
+            }
+        }
+        return null;
+    }
+
+    /**
+    * 鑾峰彇Map闆嗗悎
+    *
+    * @param eItem 涓嶅寘鍚」
+    * @return
+    */
+    public static Map<String, String> getEnumMap(Integer... eItem) {
+        Map<String, String> resultMap = new LinkedHashMap<>();
+        for (ThirdPartyStatusEnum item : ThirdPartyStatusEnum.values()) {
+            try {
+                boolean hasE = false;
+                for (Integer e : eItem) {
+                    if (item.getValue() == e) {
+                        hasE = true;
+                        break;
+                    }
+                }
+                if (!hasE) {
+                    resultMap.put(item.getValue() + "", item.getDesc());
+                }
+            } catch (Exception ex) {
+
+            }
+        }
+        return resultMap;
+    }
+}
\ No newline at end of file
diff --git a/base-manager/src/main/java/com/mortals/xhx/common/code/ThirdPartyTypeEnum.java b/base-manager/src/main/java/com/mortals/xhx/common/code/ThirdPartyTypeEnum.java
new file mode 100644
index 00000000..1980209e
--- /dev/null
+++ b/base-manager/src/main/java/com/mortals/xhx/common/code/ThirdPartyTypeEnum.java
@@ -0,0 +1,65 @@
+package com.mortals.xhx.common.code;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+* 鍚敤鐘舵€� (0.鍋滄锛�1.鍚敤)鏋氫妇绫�
+*
+* @author zxfei
+*/
+public enum ThirdPartyTypeEnum {
+    涓氬姟(1, "涓氬姟淇℃伅鍙樻洿"),
+    鍚敤(2, "鍚敤");
+    private Integer value;
+    private String desc;
+
+    ThirdPartyTypeEnum(Integer value, String desc) {
+        this.value = value;
+        this.desc = desc;
+    }
+
+    public Integer getValue() {
+        return this.value;
+    }
+
+    public String getDesc() {
+        return this.desc;
+    }
+
+    public static ThirdPartyTypeEnum getByValue(Integer value) {
+        for (ThirdPartyTypeEnum statusEnum : ThirdPartyTypeEnum.values()) {
+            if (statusEnum.getValue() == value) {
+                return statusEnum;
+            }
+        }
+        return null;
+    }
+
+    /**
+    * 鑾峰彇Map闆嗗悎
+    *
+    * @param eItem 涓嶅寘鍚」
+    * @return
+    */
+    public static Map<String, String> getEnumMap(Integer... eItem) {
+        Map<String, String> resultMap = new LinkedHashMap<>();
+        for (ThirdPartyTypeEnum item : ThirdPartyTypeEnum.values()) {
+            try {
+                boolean hasE = false;
+                for (Integer e : eItem) {
+                    if (item.getValue() == e) {
+                        hasE = true;
+                        break;
+                    }
+                }
+                if (!hasE) {
+                    resultMap.put(item.getValue() + "", item.getDesc());
+                }
+            } catch (Exception ex) {
+
+            }
+        }
+        return resultMap;
+    }
+}
\ No newline at end of file
diff --git a/base-manager/src/main/java/com/mortals/xhx/common/utils/SendTask.java b/base-manager/src/main/java/com/mortals/xhx/common/utils/SendTask.java
new file mode 100644
index 00000000..54e84119
--- /dev/null
+++ b/base-manager/src/main/java/com/mortals/xhx/common/utils/SendTask.java
@@ -0,0 +1,47 @@
+package com.mortals.xhx.common.utils;
+
+import com.alibaba.fastjson.JSON;
+import com.mortals.framework.util.HttpUtil;
+import com.mortals.xhx.busiz.req.ApiThirdPartyReq;
+import com.mortals.xhx.common.code.MessageTypeEnum;
+import com.mortals.xhx.common.code.YesNoEnum;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static com.mortals.framework.util.HttpUtil.HEADER_CONTENT_TYPE;
+
+/**
+ * 鍙戦€氱煡绗笁鏂�
+ *
+ * @author: zxfei
+ * @date: 2022/4/28 10:56
+ * @description:
+ **/
+@Slf4j
+@AllArgsConstructor
+public class SendTask implements Runnable {
+    private String sendUrl;
+    private String content;
+
+    @Override
+    public void run() {
+        ApiThirdPartyReq<String> apiThirdPartyReq = new ApiThirdPartyReq<>();
+        apiThirdPartyReq.setCode(YesNoEnum.YES.getValue());
+        apiThirdPartyReq.setType(MessageTypeEnum.TRANSACTION.getValue());
+        apiThirdPartyReq.setData(content);
+        String resp = null;
+        try {
+            Map<String, String> header = new HashMap<>();
+            header.put(HEADER_CONTENT_TYPE, "application/json");
+            String reqStr = JSON.toJSONString(apiThirdPartyReq);
+            log.info("sendUrl:{} \n sendMessageReq:{}",sendUrl, reqStr);
+            resp = HttpUtil.doPost(sendUrl, header, reqStr);
+            log.debug("sendMessageResp:{}", resp);
+        } catch (Exception e) {
+            log.error("寮傚父:", e);
+        }
+    }
+}
diff --git a/base-manager/src/main/java/com/mortals/xhx/common/utils/SendTaskThreadPool.java b/base-manager/src/main/java/com/mortals/xhx/common/utils/SendTaskThreadPool.java
new file mode 100644
index 00000000..c38dd9c8
--- /dev/null
+++ b/base-manager/src/main/java/com/mortals/xhx/common/utils/SendTaskThreadPool.java
@@ -0,0 +1,68 @@
+package com.mortals.xhx.common.utils;
+
+import org.springframework.stereotype.Component;
+
+import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadPoolExecutor;
+
+/**
+ * 鍙戦€佷换鍔$嚎绋嬫睜
+ *
+ * @author: zxfei
+ * @date: 2022/4/28 10:52
+ */
+@Component
+public class SendTaskThreadPool {
+
+    /**
+     * 绾跨▼姹�
+     */
+    private ThreadPoolExecutor threadPool;
+
+    private int poolSize;
+
+    private volatile boolean isInit = false;
+
+    private Object lock = new Object();
+
+
+    public void init(Integer threadNum) {
+        if (poolSize < 0) {
+            throw new IllegalArgumentException();
+        }
+        if (poolSize < Runtime.getRuntime().availableProcessors()) {
+            poolSize = Runtime.getRuntime().availableProcessors() + 1;
+        }
+        if (!isInit) {
+            synchronized (lock) {
+                if (!isInit) {
+                    threadPool = (ThreadPoolExecutor) Executors.newFixedThreadPool(threadNum);
+
+                    isInit = true;
+                }
+            }
+
+        }
+    }
+
+    public void execute(Runnable command) {
+        threadPool.execute(command);
+    }
+
+    public void setPoolSize(int poolSize) {
+        threadPool.setCorePoolSize(poolSize);
+        threadPool.setMaximumPoolSize(poolSize);
+    }
+
+    public void incrementPoolSize(int delta) {
+        setPoolSize(threadPool.getCorePoolSize() + delta);
+    }
+
+    public synchronized void close() {
+        if (threadPool != null) {
+            threadPool.shutdown();
+            threadPool = null;
+            isInit = false;
+        }
+    }
+}
diff --git a/base-manager/src/main/java/com/mortals/xhx/module/business/service/impl/BusinessServiceImpl.java b/base-manager/src/main/java/com/mortals/xhx/module/business/service/impl/BusinessServiceImpl.java
index 4bcef90d..b7705534 100644
--- a/base-manager/src/main/java/com/mortals/xhx/module/business/service/impl/BusinessServiceImpl.java
+++ b/base-manager/src/main/java/com/mortals/xhx/module/business/service/impl/BusinessServiceImpl.java
@@ -1,34 +1,42 @@
 package com.mortals.xhx.module.business.service.impl;
 
-import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
+import com.mortals.framework.ap.GlobalSysInfo;
+import com.mortals.framework.exception.AppException;
+import com.mortals.framework.model.Context;
 import com.mortals.framework.model.PageInfo;
 import com.mortals.framework.model.Result;
 import com.mortals.framework.service.impl.AbstractCRUDCacheServiceImpl;
+import com.mortals.xhx.base.system.message.MessageService;
+import com.mortals.xhx.busiz.req.ApiThirdPartyReq;
+import com.mortals.xhx.busiz.req.BussinessThirdPartyReq;
 import com.mortals.xhx.common.code.IsBusinessEnum;
+import com.mortals.xhx.common.code.ThirdPartyStatusEnum;
+import com.mortals.xhx.common.code.ThirdPartyTypeEnum;
+import com.mortals.xhx.common.code.YesNoEnum;
 import com.mortals.xhx.common.utils.BeanUtil;
-import com.mortals.xhx.module.business.model.*;
-import com.mortals.xhx.module.business.service.BusinessMatterService;
+import com.mortals.xhx.module.business.dao.BusinessDao;
+import com.mortals.xhx.module.business.model.BusinessEntity;
+import com.mortals.xhx.module.business.model.BusinessQuery;
+import com.mortals.xhx.module.business.service.BusinessService;
 import com.mortals.xhx.module.site.model.SiteBusinessEntity;
 import com.mortals.xhx.module.site.model.SiteBusinessQuery;
 import com.mortals.xhx.module.site.model.SiteEntity;
 import com.mortals.xhx.module.site.service.SiteBusinessService;
 import com.mortals.xhx.module.site.service.SiteService;
+import com.mortals.xhx.module.window.model.WindowBusinessEntity;
+import com.mortals.xhx.module.window.model.WindowBusinessQuery;
+import com.mortals.xhx.module.window.service.WindowBusinessService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.mortals.framework.exception.AppException;
-import com.mortals.framework.model.Context;
-import com.mortals.xhx.common.code.SatusEnum;
-import com.mortals.framework.service.impl.AbstractCRUDServiceImpl;
-import com.mortals.xhx.module.business.dao.BusinessDao;
-import com.mortals.xhx.module.business.service.BusinessService;
 import org.springframework.util.ObjectUtils;
 
 import java.util.*;
 import java.util.stream.Collectors;
 
-import static com.mortals.framework.ap.SysConstains.RESULT_KEY;
+import static com.mortals.xhx.common.key.Constant.PARAM_SERVER_PHP_HTTP_URL;
 
 /**
  * BusinessService
@@ -38,11 +46,17 @@ import static com.mortals.framework.ap.SysConstains.RESULT_KEY;
  * @date 2022-01-13
  */
 @Service("businessService")
+@Slf4j
 public class BusinessServiceImpl extends AbstractCRUDCacheServiceImpl<BusinessDao, BusinessEntity, Long> implements BusinessService {
     @Autowired
     private SiteBusinessService siteBusinessService;
     @Autowired
+    private WindowBusinessService windowBusinessService;
+    @Autowired
     private SiteService siteService;
+    @Autowired
+    private MessageService messageService;
+
 
     @Override
     protected void findAfter(BusinessEntity params, PageInfo pageInfo, Context context, List<BusinessEntity> list) throws AppException {
@@ -87,21 +101,97 @@ public class BusinessServiceImpl extends AbstractCRUDCacheServiceImpl<BusinessDa
                 .filter(item -> !item.getBusinessName().equals(entity.getName()))
                 .peek(item -> item.setBusinessName(entity.getName()))
                 .collect(Collectors.toList());
-        if(!ObjectUtils.isEmpty(siteBusinessEntities)){
-            siteBusinessService.update(siteBusinessEntities,context);
+        if (!ObjectUtils.isEmpty(siteBusinessEntities)) {
+            siteBusinessService.update(siteBusinessEntities, context);
         }
+
+        //閫氱煡绗笁鏂瑰钩鍙�
+        String phpUrl = GlobalSysInfo.getParamValue(PARAM_SERVER_PHP_HTTP_URL, "http://172.15.28.116:8090");
+        phpUrl += "/inter/device/baseDataSave";
+        BussinessThirdPartyReq bussinessThirdPartyReq = new BussinessThirdPartyReq();
+        BeanUtils.copyProperties(entity, bussinessThirdPartyReq, BeanUtil.getNullPropertyNames(entity));
+        ApiThirdPartyReq<BussinessThirdPartyReq> apiThirdPartyReq = new ApiThirdPartyReq<>();
+        apiThirdPartyReq.setCode(YesNoEnum.YES.getValue());
+        apiThirdPartyReq.setType(ThirdPartyTypeEnum.涓氬姟.getValue());
+        apiThirdPartyReq.setStatus(ThirdPartyStatusEnum.淇敼.getValue());
+        apiThirdPartyReq.setData(bussinessThirdPartyReq);
+        messageService.sendThirdParty(phpUrl, JSON.toJSONString(apiThirdPartyReq));
         super.updateAfter(entity, context);
     }
 
 
     @Override
     protected void removeBefore(Long[] ids, Context context) throws AppException {
+
+        Set<Long> idSet = Arrays.asList(ids).stream().collect(Collectors.toSet());
+        List<BusinessEntity> businessEntities = this.get(ids, context);
         //鏈夊瓙鑺傜偣 绂佹鍒犻櫎
+        List<BusinessEntity> collect = businessEntities.stream().filter(f -> IsBusinessEnum.涓€绾т笟鍔�.getValue() == f.getIsBusiness()).collect(Collectors.toList());
+        if (!ObjectUtils.isEmpty(collect)) {
+            //鍒犻櫎鑺傜偣鍖呭惈涓€绾ц妭鐐癸紝鏌ヨ鍒犻櫎鐨勫瓙鑺傜偣 鏄惁鍖呭惈鍦ㄦ墍鏈�
+            for (BusinessEntity businessEntity : collect) {
+                List<BusinessEntity> childList = this.find(new BusinessQuery().parentId(businessEntity.getId()));
+                boolean bool = false;
+                for (BusinessEntity child : childList) {
+                    if (!idSet.contains(child.getId())) {
+                        bool = true;
+                        break;
+                    }
+                    if (bool) {
+                        throw new AppException("鍒犻櫎鐨勭埗涓氬姟瀛樺湪瀛愪笟鍔★紝涓嶈兘鍒犻櫎");
+                    }
+                }
+            }
+        }
+
+        String phpUrl = GlobalSysInfo.getParamValue(PARAM_SERVER_PHP_HTTP_URL, "http://172.15.28.116:8090");
+        phpUrl += "/inter/device/baseDataSave";
+        for (BusinessEntity entity : businessEntities) {
+            BussinessThirdPartyReq bussinessThirdPartyReq = new BussinessThirdPartyReq();
+            BeanUtils.copyProperties(entity, bussinessThirdPartyReq, BeanUtil.getNullPropertyNames(entity));
+            ApiThirdPartyReq<BussinessThirdPartyReq> apiThirdPartyReq = new ApiThirdPartyReq<>();
+            apiThirdPartyReq.setCode(YesNoEnum.YES.getValue());
+            apiThirdPartyReq.setType(ThirdPartyTypeEnum.涓氬姟.getValue());
+            apiThirdPartyReq.setStatus(ThirdPartyStatusEnum.鍒犻櫎.getValue());
+            apiThirdPartyReq.setData(bussinessThirdPartyReq);
+            messageService.sendThirdParty(phpUrl, JSON.toJSONString(apiThirdPartyReq));
+        }
+
 
         super.removeBefore(ids, context);
     }
 
 
+    /**
+     * @param ids
+     * @param context
+     * @param result
+     * @throws AppException
+     */
+    @Override
+    protected void removeAfter(Long[] ids, Context context, int result) throws AppException {
+        super.removeAfter(ids, context, result);
+        if (!ObjectUtils.isEmpty(ids)) {
+            //绾ц仈鍒犻櫎绐楀彛涓氬姟
+            WindowBusinessQuery windowBusinessQuery = new WindowBusinessQuery();
+            windowBusinessQuery.setSiteBusinessIdList(Arrays.asList(ids));
+            List<WindowBusinessEntity> windowBusinessEntities = windowBusinessService.find(windowBusinessQuery);
+            log.info("remove windowBusinessEntities size:{}", windowBusinessEntities.size());
+            if (!ObjectUtils.isEmpty(windowBusinessEntities)) {
+                Long[] idList = windowBusinessEntities.stream().map(item -> item.getId()).toArray(Long[]::new);
+                windowBusinessService.remove(idList, context);
+            }
+            SiteBusinessQuery siteBusinessQuery = new SiteBusinessQuery();
+            siteBusinessQuery.setBusinessIdList(Arrays.asList(ids));
+            List<SiteBusinessEntity> siteBusinessEntities = siteBusinessService.find(siteBusinessQuery);
+            log.info("remove siteBusinessEntities size:{}", siteBusinessEntities.size());
+            if (!ObjectUtils.isEmpty(siteBusinessEntities)) {
+                Long[] idList = siteBusinessEntities.stream().map(item -> item.getId()).toArray(Long[]::new);
+                siteBusinessService.remove(idList, context);
+            }
+        }
+    }
+
     @Override
     public void addBusinessToSite(String businessIds, Long siteId, Context context) {
 
@@ -129,7 +219,7 @@ public class BusinessServiceImpl extends AbstractCRUDCacheServiceImpl<BusinessDa
     }
 
     @Override
-    public Result<BusinessEntity> flatList(BusinessEntity query,PageInfo pageInfo, Context context) {
+    public Result<BusinessEntity> flatList(BusinessEntity query, PageInfo pageInfo, Context context) {
         Result<BusinessEntity> result = this.dao.getList(query, pageInfo);
         return result;
     }
@@ -138,7 +228,7 @@ public class BusinessServiceImpl extends AbstractCRUDCacheServiceImpl<BusinessDa
         SiteBusinessEntity siteBusinessEntity = new SiteBusinessEntity();
         BeanUtils.copyProperties(item, siteBusinessEntity, BeanUtil.getNullPropertyNames(item));
         SiteEntity siteEntity = siteService.get(siteId);
-        if(ObjectUtils.isEmpty(siteEntity)){
+        if (ObjectUtils.isEmpty(siteEntity)) {
             throw new AppException("鏈壘鍒扮浉搴旂珯鐐癸紒");
         }
         siteBusinessEntity.setSiteId(siteEntity.getId());
@@ -182,6 +272,5 @@ public class BusinessServiceImpl extends AbstractCRUDCacheServiceImpl<BusinessDa
         System.out.println(JSON.toJSONString(siteBusinessQuery));
 
 
-
     }
 }
\ No newline at end of file
-- 
2.24.3