From 8caf5f04be94d8f52fb291dd045663079d681c19 Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期六, 16 八月 2025 11:43:08 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/main/java/org/jeecg/modules/andon/service/impl/AndonResponseConfigServiceImpl.java |  186 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 184 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/jeecg/modules/andon/service/impl/AndonResponseConfigServiceImpl.java b/src/main/java/org/jeecg/modules/andon/service/impl/AndonResponseConfigServiceImpl.java
index 04db58b..c895470 100644
--- a/src/main/java/org/jeecg/modules/andon/service/impl/AndonResponseConfigServiceImpl.java
+++ b/src/main/java/org/jeecg/modules/andon/service/impl/AndonResponseConfigServiceImpl.java
@@ -1,22 +1,204 @@
 package org.jeecg.modules.andon.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang.StringUtils;
+import org.jeecg.modules.andon.dto.AndonButtonDTO;
+import org.jeecg.modules.andon.entity.AndonButtonConfig;
+import org.jeecg.modules.andon.entity.AndonOrder;
 import org.jeecg.modules.andon.entity.AndonResponseConfig;
 import org.jeecg.modules.andon.mapper.AndonResponseConfigMapper;
+import org.jeecg.modules.andon.service.IAndonButtonConfigService;
+import org.jeecg.modules.andon.service.IAndonOrderService;
 import org.jeecg.modules.andon.service.IAndonResponseConfigService;
+import org.jeecg.modules.base.entity.Factory;
+import org.jeecg.modules.base.service.IFactoryService;
+import org.jeecg.modules.feishu.service.FeishuUserService;
+import org.jeecg.modules.system.entity.SysUser;
+import org.jeecg.modules.system.service.ISysUserService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.List;
 
 /**
  * @Description: 瀹夌伅鍝嶅簲閰嶇疆
  * @Author: jeecg-boot
- * @Date:   2025-07-10
+ * @Date: 2025-07-10
  * @Version: V1.0
  */
 @Service
 public class AndonResponseConfigServiceImpl extends ServiceImpl<AndonResponseConfigMapper, AndonResponseConfig> implements IAndonResponseConfigService {
+    @Autowired
+    private IFactoryService factoryService;
+
+    @Autowired
+    private ISysUserService iSysUserService;
+
+    @Autowired
+    private FeishuUserService feishuUserService;
+    @Autowired
+    private IAndonButtonConfigService andonButtonConfigService;
+
+    @Autowired
+    private IAndonOrderService andonOrderService;
 
     @Override
     public AndonResponseConfig getAndonResponseConfigByFactoryIdAndButtonId(String factoryId, String buttonId) {
-        return baseMapper.getAndonResponseConfigByFactoryIdAndButtonId(factoryId,buttonId);
+        return baseMapper.getAndonResponseConfigByFactoryIdAndButtonId(factoryId, buttonId);
     }
+
+    @Override
+    public List<AndonButtonDTO> queryAndonButtonList(String factoryId) {
+        return Collections.emptyList();
+    }
+
+    @Override
+    public void sendAndonNotification(AndonButtonDTO andonButtonDTO) {
+        /**
+         * 1. 楠岃瘉宸ュ崟鐘舵��
+         */
+        if (andonButtonDTO == null) {
+            log.warn("璇锋眰鍙傛暟涓虹┖");
+            throw new IllegalArgumentException("璇锋眰鍙傛暟涓嶈兘涓虹┖");
+        }
+        /**
+         * 2. 鑾峰彇鍝嶅簲閰嶇疆
+         */
+        AndonResponseConfig andonResponseConfig = this.getById(andonButtonDTO.getId());
+
+        AndonOrder andonOrder = andonOrderService.getById(andonButtonDTO.getOrderIds());
+        if (andonOrder == null) {
+            log.warn("鏈壘鍒癐D涓篬{}]鐨勫畨鐏鍗�");
+            throw new IllegalArgumentException("鏈壘鍒板搴旂殑瀹夌伅璁㈠崟");
+        }
+        String orderStatus = andonOrder.getOrderStatus();
+        andonButtonDTO.setOrderStatus(orderStatus);
+        if (andonResponseConfig == null) {
+            log.warn("鏈壘鍒癐D涓篬{}]鐨勫搷搴旈厤缃�");
+            throw new IllegalArgumentException("鏈壘鍒板搴旂殑鍝嶅簲閰嶇疆");
+        }
+        /**
+         * 3. 璁剧疆浜岀骇鍝嶅簲浜�
+         */
+        String secondResponder = andonResponseConfig.getSecondResponder();
+        if (StringUtils.isNotBlank(secondResponder)) {
+            andonButtonDTO.setSecondResponder(secondResponder);
+        }
+
+        /**
+         * 4. 鑾峰彇宸ュ巶淇℃伅
+         */
+
+        String factoryId = andonResponseConfig.getFactoryId();
+        if (factoryId == null || factoryId.isEmpty()) {
+            log.warn("鍝嶅簲閰嶇疆[{}]鏈缃伐鍘侷D");
+            throw new IllegalArgumentException("鍝嶅簲閰嶇疆鏈缃伐鍘備俊鎭�");
+        }
+
+        Factory factory = factoryService.getOne(new QueryWrapper<Factory>()
+                .eq("id", factoryId)
+                .eq("del_flag", 0));
+
+        if (factory == null) {
+            log.warn("鏈壘鍒癐D涓篬{}]鐨勫伐鍘�");
+            throw new IllegalArgumentException("鏈壘鍒板搴旂殑宸ュ巶淇℃伅");
+        }
+
+        /**
+         * 鑾峰彇浜х嚎鍚嶇О
+         */
+        String factoryName = factory.getFactoryName();
+        andonButtonDTO.setFactoryName(factoryName);
+        /**
+         * 6. 璁剧疆宸ュ巶鍚嶇О
+         */
+        String parentId = factory.getParentId();
+        if (parentId != null && !parentId.isEmpty()) {
+            Factory parentFactory = factoryService.getOne(new QueryWrapper<Factory>()
+                    .eq("id", parentId)
+                    .eq("del_flag", 0));
+            if (parentFactory != null) {
+                andonButtonDTO.setParentFactoryName(parentFactory.getFactoryName());
+            }
+        }
+        /**
+         * 6. 鑾峰彇瀹夌伅鎸夐挳閰嶇疆
+         */
+        AndonButtonConfig andonButtonById = andonButtonConfigService.getAndonButtonById(andonButtonDTO.getButtonId());
+        if (andonButtonById == null) {
+            log.warn("鏈壘鍒癐D涓篬{}]鐨勫畨鐏寜閽�");
+            throw new IllegalArgumentException("鏈壘鍒板搴旂殑瀹夌伅鎸夐挳淇℃伅");
+        }
+        /**
+         * 7. 璁剧疆鍝嶅簲鏃堕棿
+         */
+        Integer upgradeResponseDuration = andonButtonById.getUpgradeResponseDuration();
+        andonButtonDTO.setUpgradeResponseDuration(upgradeResponseDuration);
+
+        Integer secondUpgradeResponseDuration = andonButtonById.getSecondUpgradeResponseDuration();
+        andonButtonDTO.setSecondUpgradeResponseDuration(secondUpgradeResponseDuration);
+
+        /**
+         * 8. 鑾峰彇鍝嶅簲浜轰俊鎭�
+         */
+        String firstResponder = andonResponseConfig.getFirsterResponder();
+        String threeResponder = andonResponseConfig.getThirdResponder();
+        SysUser thirdUser = iSysUserService.getUserByName(threeResponder);
+        SysUser userByName = iSysUserService.getUserByName(firstResponder);
+        SysUser secondUser = null;
+
+        if (StringUtils.isNotBlank(secondResponder)) {
+            secondUser = iSysUserService.getUserByName(secondResponder);
+        }
+        /**
+         * 9. 楠岃瘉骞惰缃搷搴斾汉淇℃伅
+         */
+
+        if (userByName == null) {
+            log.warn("鐢ㄦ埛[{}]鏈壘鍒帮紝鏃犳硶鍙戦�侀�氱煡");
+            throw new IllegalArgumentException("鐢ㄦ埛[{}]鏈壘鍒帮紝鏃犳硶鍙戦�侀�氱煡");
+        }
+
+        if (secondUser == null && StringUtils.isNotBlank(secondResponder)) {
+            log.warn("鐢ㄦ埛[{}]鏈壘鍒帮紝鏃犳硶鍙戦�侀�氱煡");
+            throw new IllegalArgumentException("鐢ㄦ埛[{}]鏈壘鍒帮紝鏃犳硶鍙戦�侀�氱煡");
+        }
+
+        if (threeResponder == null) {
+            StringUtils.isNotBlank(null);
+        }
+        //
+        /**
+         * 10. 璁剧疆鍝嶅簲浜虹浉鍏充俊鎭�
+         */
+
+        andonButtonDTO.setResponderOpenId(userByName.getOpenId());
+        andonButtonDTO.setResponder(userByName.getRealname());
+        log.warn("鐢ㄦ埛[{}]宸叉壘鍒帮紝寮�濮嬪彂閫侀�氱煡");
+
+        if (secondUser != null) {
+            andonButtonDTO.setSecondResponderOpenId(secondUser.getOpenId());
+            andonButtonDTO.setSecondResponder(secondUser.getRealname());
+            log.warn("鐢ㄦ埛[{}]宸叉壘鍒帮紝寮�濮嬪彂閫侀�氱煡");
+        }
+        if (thirdUser != null) {
+            andonButtonDTO.setThirdResponderOpenId(thirdUser.getOpenId());
+            andonButtonDTO.setThirdResponder(thirdUser.getRealname());
+            log.warn("鐢ㄦ埛[{}]宸叉壘鍒帮紝寮�濮嬪彂閫侀�氱煡");
+        }
+
+        /**
+         *  11. 鍙戦�侀涔﹂�氱煡
+         */
+        if (StringUtils.isNotBlank(firstResponder)) {
+            String feishuAccessToken = feishuUserService.getFeishuAccessToken();
+            feishuUserService.sendAndonNotification(feishuAccessToken, andonButtonDTO);
+        } else {
+            log.warn("宸ュ崟[{}]鏈壘鍒板搴斿搷搴斾汉锛屾棤娉曞彂閫侀�氱煡");
+        }
+    }
+
+
 }

--
Gitblit v1.9.3