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 |  105 ++++++++++++++++++++++++++++++++--------------------
 1 files changed, 65 insertions(+), 40 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 c654ffc..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,9 +16,12 @@
 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;
 import org.quartz.Job;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
@@ -26,8 +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.*;
 import java.util.stream.Collectors;
 
 /**
@@ -47,6 +49,8 @@
     private ISysQuartzLogService sysQuartzLogService;
     @Autowired
     private IQuartzJobService quartzJobService;
+    @Autowired
+    private IMdcProductionService mdcProductionService;
 
     @Value("${wechatEnterprise.cardActionUrl}")
     private String cardActionUrl;
@@ -64,48 +68,49 @@
         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));
-            if (!waitOrderList.isEmpty()) {
+            List<EamWeekMaintenanceOrder> unReceivedOrderList = eamWeekMaintenanceOrderService.selectUnReceivedMaintenanceOrder();
+            if (!unReceivedOrderList.isEmpty()) {
                 //鏈夊緟淇濆吇鐨勫伐鍗曪紝鎺ㄩ�佷紒涓氬井淇℃秷鎭�
-                //鏌ヨ鎵�鏈夋搷浣滃伐
-                List<SysUser> userList = sysUserService.list(new LambdaQueryWrapper<SysUser>()
-                        .eq(SysUser::getPost, BusinessCodeConst.PCR0001)
-                        .eq(SysUser::getDelFlag, CommonConstant.DEL_FLAG_0)
-                        .eq(SysUser::getStatus, CommonConstant.USER_UNFREEZE));
-                if (userList.isEmpty()) {
-                    log.error("绯荤粺鏈缃搷浣滃伐鐢ㄦ埛锛屾棤娉曟帹閫佸伐鍗曢鍙栨彁閱掓秷鎭�");
-                    quartzLog.setIsSuccess(0);
-                    quartzLog.setParams("绯荤粺鏈缃搷浣滃伐鐢ㄦ埛锛屾棤娉曟帹閫佸伐鍗曢鍙栨彁閱掓秷鎭�");
-                } else {
-                    TemplateCard templateCard = new TemplateCard();
-                    String toUsers = userList.stream().map(SysUser::getUsername).collect(Collectors.joining(","));
-                    String touser = wechatEnterpriseService.getTouser(toUsers, false);
-                    templateCard.setTouser(touser);
-                    TemplateCardEntity templateCardEntity = new TemplateCardEntity();
-                    templateCard.setTemplate_card(templateCardEntity);
-                    templateCardEntity.setTask_id(waitOrderList.get(0).getId());
-                    TemplateCardEntity.MainTitle mainTitle = new TemplateCardEntity.MainTitle();
-                    mainTitle.setTitle("璁惧鍛ㄤ繚");
-                    templateCardEntity.setMain_title(mainTitle);
-                    templateCardEntity.setSub_title_text("鎮ㄦ湁寰呴鍙栧懆淇濆伐鍗曪紝璇疯繘鍏ョ郴缁熼鍙�");
-                    TemplateCardEntity.CardAction cardAction = new TemplateCardEntity.CardAction();
-                    cardAction.setType(1);
-                    cardAction.setUrl(cardActionUrl);
-                    templateCardEntity.setCard_action(cardAction);
-                    JSONObject jsonObject = wechatEnterpriseService.sendTemplateCardMsg(templateCard, true);
-                    Integer errcode = (Integer) jsonObject.get("errcode");
-                    if (errcode == 0) {
-                        log.info("鎺ㄩ�佸緟棰嗗彇鍛ㄤ繚宸ュ崟浼佷笟寰俊娑堟伅鎴愬姛锛寋}", jsonObject.toJSONString());
-                        quartzLog.setIsSuccess(0);
-                        quartzLog.setParams(jsonObject.toJSONString());
+                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 : productionIds) {
+                    //鏌ヨ璇ヤ骇绾夸笅鐨勬墍鏈夋搷浣滃伐
+                    List<UserSelector> userSelectorList = sysUserService.selectOperatorList(null, orgId, BusinessCodeConst.PCR0001);
+                    if (userSelectorList.isEmpty()) {
+                        log.error("id涓�:{},鐨勪骇绾挎湭閰嶇疆鎿嶄綔宸ョ敤鎴凤紝鏃犳硶鎺ㄩ�佸懆淇濆伐鍗曢鍙栨彁閱掓秷鎭�", orgId);
+                        message.append("id涓�: ").append(orgId).append(" 鐨勪骇绾挎湭閰嶇疆鎿嶄綔宸ョ敤鎴凤紝鏃犳硶鎺ㄩ�佸懆淇濆伐鍗曢鍙栨彁閱掓秷鎭�").append("\n");
                     } else {
-                        log.error("鎺ㄩ�佸緟棰嗗彇鍛ㄤ繚宸ュ崟浼佷笟寰俊娑堟伅澶辫触锛寋}", jsonObject.toJSONString());
-                        quartzLog.setIsSuccess(-1);
-                        quartzLog.setExceptionDetail(jsonObject.toJSONString());
+                        String toUsers = userSelectorList.stream().map(UserSelector::getUsername).collect(Collectors.joining(","));
+                        String touser = wechatEnterpriseService.getTouser(toUsers, false);
+                        //鏋勯�犳秷鎭綋鍐呭
+                        TemplateCard templateCard = new TemplateCard();
+                        templateCard.setTouser(touser);
+                        TemplateCardEntity templateCardEntity = new TemplateCardEntity();
+                        templateCard.setTemplate_card(templateCardEntity);
+                        templateCardEntity.setTask_id(UUID.randomUUID().toString().replaceAll("-", ""));
+                        TemplateCardEntity.MainTitle mainTitle = new TemplateCardEntity.MainTitle();
+                        mainTitle.setTitle("璁惧鍛ㄤ繚");
+                        templateCardEntity.setMain_title(mainTitle);
+                        templateCardEntity.setSub_title_text("鎮ㄦ湁寰呴鍙栧懆淇濆伐鍗曪紝璇疯繘鍏ョ郴缁熼鍙�");
+                        TemplateCardEntity.CardAction cardAction = new TemplateCardEntity.CardAction();
+                        cardAction.setType(1);
+                        cardAction.setUrl(cardActionUrl);
+                        templateCardEntity.setCard_action(cardAction);
+                        JSONObject jsonObject = wechatEnterpriseService.sendTemplateCardMsg(templateCard, true);
+                        Integer errcode = (Integer) jsonObject.get("errcode");
+                        if (errcode == 0) {
+                            log.info("鎺ㄩ�佸緟棰嗗彇鍛ㄤ繚宸ュ崟浼佷笟寰俊娑堟伅鎴愬姛锛寋}", jsonObject.toJSONString());
+                            message.append("鎺ㄩ�佸緟棰嗗彇鍛ㄤ繚宸ュ崟浼佷笟寰俊娑堟伅鎴愬姛锛�").append(jsonObject.toJSONString()).append("\n");
+                        } else {
+                            log.error("鎺ㄩ�佸緟棰嗗彇鍛ㄤ繚宸ュ崟浼佷笟寰俊娑堟伅澶辫触锛寋}", jsonObject.toJSONString());
+                            message.append("鎺ㄩ�佸緟棰嗗彇鍛ㄤ繚宸ュ崟浼佷笟寰俊娑堟伅澶辫触锛�").append(jsonObject.toJSONString()).append("\n");
+                        }
                     }
                 }
+                quartzLog.setIsSuccess(0);
+                quartzLog.setExceptionDetail(message.toString());
             } else {
                 log.info("鏃犲緟棰嗗彇鍛ㄤ繚宸ュ崟锛屾棤闇�鎺ㄩ�佸伐鍗曢鍙栨彁閱掓秷鎭�");
                 quartzLog.setIsSuccess(0);
@@ -120,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