From cbc60421dfce8f052281714d0fa70b01d139f53c Mon Sep 17 00:00:00 2001
From: cuilei <ray_tsu1@163.com>
Date: 星期五, 22 八月 2025 17:39:15 +0800
Subject: [PATCH] 周保消息推送定时任务调整(消息只推送到二级车间层级;之前为设备所属车间,可能会存在三级车间,导致收到多条重复的消息提醒)

---
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/WeekMaintenanceOrderWxMessageSendJob.java |   39 +++++++++++++++++++++++++++++----------
 1 files changed, 29 insertions(+), 10 deletions(-)

diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/WeekMaintenanceOrderWxMessageSendJob.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/WeekMaintenanceOrderWxMessageSendJob.java
index 0eac778..d61ea12 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/WeekMaintenanceOrderWxMessageSendJob.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/WeekMaintenanceOrderWxMessageSendJob.java
@@ -16,7 +16,9 @@
 import org.jeecg.modules.quartz.service.ISysQuartzLogService;
 import org.jeecg.modules.qywx.message.vo.TemplateCard;
 import org.jeecg.modules.qywx.message.vo.TemplateCardEntity;
+import org.jeecg.modules.system.entity.MdcProduction;
 import org.jeecg.modules.system.entity.SysUser;
+import org.jeecg.modules.system.service.IMdcProductionService;
 import org.jeecg.modules.system.service.ISysUserService;
 import org.jeecg.modules.system.service.impl.ThirdAppWechatEnterpriseServiceImpl;
 import org.jeecg.modules.system.vo.UserSelector;
@@ -27,10 +29,7 @@
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -50,6 +49,8 @@
     private ISysQuartzLogService sysQuartzLogService;
     @Autowired
     private IQuartzJobService quartzJobService;
+    @Autowired
+    private IMdcProductionService mdcProductionService;
 
     @Value("${wechatEnterprise.cardActionUrl}")
     private String cardActionUrl;
@@ -67,21 +68,19 @@
         long startTime = System.currentTimeMillis();
         try {
             //鏌ヨ鎵�鏈夊緟淇濆吇鐨勫懆淇濆伐鍗�
-            List<EamWeekMaintenanceOrder> waitOrderList = eamWeekMaintenanceOrderService.list(new LambdaQueryWrapper<EamWeekMaintenanceOrder>()
-                    .eq(EamWeekMaintenanceOrder::getMaintenanceStatus, WeekMaintenanceStatusEnum.WAIT_MAINTENANCE.name())
-                    .eq(EamWeekMaintenanceOrder::getDelFlag, CommonConstant.DEL_FLAG_0));
             List<EamWeekMaintenanceOrder> unReceivedOrderList = eamWeekMaintenanceOrderService.selectUnReceivedMaintenanceOrder();
             if (!unReceivedOrderList.isEmpty()) {
                 //鏈夊緟淇濆吇鐨勫伐鍗曪紝鎺ㄩ�佷紒涓氬井淇℃秷鎭�
                 Map<String, List<EamWeekMaintenanceOrder>> unReceivedOrderMap = unReceivedOrderList.stream()
                         .collect(Collectors.groupingBy(EamWeekMaintenanceOrder::getOrgId));
+                Set<String> productionIds = selectTwoLevelProductionIds(unReceivedOrderMap.keySet());
                 StringBuilder message = new StringBuilder();
-                for (String orgId : unReceivedOrderMap.keySet()) {
+                for (String orgId : productionIds) {
                     //鏌ヨ璇ヤ骇绾夸笅鐨勬墍鏈夋搷浣滃伐
                     List<UserSelector> userSelectorList = sysUserService.selectOperatorList(null, orgId, BusinessCodeConst.PCR0001);
                     if (userSelectorList.isEmpty()) {
-                        log.error("绯荤粺鏈缃搷浣滃伐鐢ㄦ埛锛屾棤娉曟帹閫佸伐鍗曢鍙栨彁閱掓秷鎭�");
-                        message.append("绯荤粺鏈缃搷浣滃伐鐢ㄦ埛锛屾棤娉曟帹閫佸伐鍗曢鍙栨彁閱掓秷鎭�").append("\n");
+                        log.error("id涓�:{},鐨勪骇绾挎湭閰嶇疆鎿嶄綔宸ョ敤鎴凤紝鏃犳硶鎺ㄩ�佸懆淇濆伐鍗曢鍙栨彁閱掓秷鎭�", orgId);
+                        message.append("id涓�: ").append(orgId).append(" 鐨勪骇绾挎湭閰嶇疆鎿嶄綔宸ョ敤鎴凤紝鏃犳硶鎺ㄩ�佸懆淇濆伐鍗曢鍙栨彁閱掓秷鎭�").append("\n");
                     } else {
                         String toUsers = userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.joining(","));
                         String touser = wechatEnterpriseService.getTouser(toUsers, false);
@@ -126,4 +125,24 @@
         quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));
         sysQuartzLogService.save(quartzLog);
     }
+
+    //濡傛灉褰撳墠浜х嚎鏄笁绾э紝鏌ヨ瀵瑰簲浜岀骇浜х嚎锛屽鏋滀笉鏄笉鍋氬鐞�
+    private Set<String> selectTwoLevelProductionIds(Set<String> productionIds) {
+        Set<String> result = new HashSet<>();
+        List<MdcProduction> mdcProductionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().in(MdcProduction::getId, productionIds));
+        for (MdcProduction production : mdcProductionList) {
+            //濡傛灉鏄笁绾т骇绾匡紝鏌ユ壘瀵瑰簲鐨勪簩绾т骇绾匡紝娣诲姞杩涚粨鏋滈泦
+            if ("3".equals(production.getOrgType())) {
+                mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>()
+                        .eq(MdcProduction::getId, production.getParentId())
+                        .eq(MdcProduction::getOrgType, "2"))
+                        .stream().findFirst().ifPresent(mdcProduction -> result.add(mdcProduction.getId()));
+            }
+            //濡傛灉鏄簩绾т骇绾匡紝娣诲姞杩涚粨鏋滈泦
+            if ("2".equals(production.getOrgType())) {
+                result.add(production.getId());
+            }
+        }
+        return result;
+    }
 }

--
Gitblit v1.9.3