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